2016-12-23 3 views
0

Ich habe eine Eigenschaften (kippe diese Datei ändern) und es sieht so aus:String-Wert von Eigenschaftendatei

aaa.bbb.ccc.first=my first value 
aaa.bbb.ccc.second=my second value 
aaa.bbb.ccc.third=my third value 

Wenn ich einen Wert in Java-Klassen muss ich i18n.getText("aaa.bbb.ccc.first") verwenden, aber es funktioniert nur für den einmaligen Wert.

Problem ist, weil ich weiß nicht.

Namen -Wertes des

-wie viele Werte in aaa.bbb.ccc sind ~

Wie ist es möglich, die Liste der Wert aaa zu erhalten. bbb.ccc ~?

+0

FYI: http://stackoverflow.com/questions/5328999/wildcard-into-properties –

+0

so gibt es keine Möglichkeit, mein Problem zu lösen? – barmi

+0

'aaa.bbb.ccc = firs, second, third' dann' String str = i18n.getText ("aaa.bbb.ccc"); 'Dann machst du eine' String.split' um deine Liste zu trennen. – Zorglube

Antwort

1

Sie könnten eine MapFilter verwenden. Verwenden Sie den MapFilter(Properties p, String prefix)-Konstruktor.

public void test() { 
    Properties props = new Properties(); 
    props.put("aaa.bbb.ccc.first", "my first value"); 
    props.put("aaa.bbb.ccc.second", "my second value"); 
    props.put("aaa.bbb.ccc.third", "my third value"); 
    props.put("Other.props", "others"); 
    MapFilter<String> filtered = new MapFilter(props, "aaa.bbb.ccc."); 
    for (Map.Entry<String, String> e : filtered.entrySet()) { 
     System.out.println("Key: " + e.getKey() + " Value: " + e.getValue()); 
    } 
    System.out.println(filtered); 

} 
+0

Eigenschaften Datei könnte in jedem Moment ändern, nur wissen, dass die Werte in 'aaa.bbb.ccc.' sind – barmi

0

Hash-Karten sind für die Art von Lookup Sie wollen nicht gemeint: Tries und radix trees sind. Es gibt eine Implementierung der Datenstruktur von Patricia Trie (dh binäre Radix-Bäume) in Apache Commons Collections: Erstellen Sie einfach einen Trie aus Ihrer Map<String, Whatever> (Sie haben einen schönen Konstruktor für den Zweck) und mit prefixMap("aaa.bbb.ccc") erhalten Sie die Submap aller Einträge deren Schlüssel habe dieses Präfix.

0

Eigenschaften hat eine Methode propertyNames(). Sie können das verwenden, um alle Schlüssel zu bekommen und von dort aus alles zu tun, was Sie wollen.

+0

Dies ist nicht falsch, aber es ist bei weitem nicht eine vollständige Antwort. – VGR

+0

Ich versuche, ihn in die richtige Richtung zu führen, ohne den ganzen Code für ihn zu schreiben :) –