Zeichenfolge str = "id1 ;; name1 || id2 ;; name2 || id3 ;; name3 ||";Wie Sie diese Zeichenfolge aufteilen und in HashMap speichern
in id1 name1 ... und es dann speichern Sie in hashmap als id1 - Taste, name1- Wert id2 - Taste, name2 - Wert ......
Zeichenfolge str = "id1 ;; name1 || id2 ;; name2 || id3 ;; name3 ||";Wie Sie diese Zeichenfolge aufteilen und in HashMap speichern
in id1 name1 ... und es dann speichern Sie in hashmap als id1 - Taste, name1- Wert id2 - Taste, name2 - Wert ......
Ein Weg, um Ihr Ziel zu erreichen ist einen StringTokenizer verwenden.
Code-Beispiel:
public static void main(String[] args) {
String input = "id1;;name1 || id2;;name2 || id3;;name3||";
Map<String, String> map = new HashMap<>();
// You have to split two times
for (String outer : splitBy(input, " || ")) {
List<String> inner = splitBy(outer, ";;"); // for example: outer="id1;;name1"
// Make sure, you have two inner input-elements
if (inner.size() == 2) {
String key = inner.get(0); // First element of List = Key
String value = inner.get(1); // Second element of List = Value
map.put(key, value);
}
}
}
private static List<String> splitBy(String toSplit, String delimiter) {
List<String> tokens = new ArrayList<>();
StringTokenizer tokenizer = new StringTokenizer(toSplit, delimiter);
while (tokenizer.hasMoreTokens()) {
tokens.add(tokenizer.nextToken());
}
return tokens;
}
auch einen Blick auf diese: Scanner vs. StringTokenizer vs. String.Split
für diesen speziellen Fall sollten Sie etwas tun:
Map<String, String> yourHashMap = new HashMap<String, String>();
String input = "id1;;name1 || id2;;name2 || id3;;name3||";
// "\" is special character so it need an escape
String[] yourStrings = input.split("\\|\\|");
String[] hashObject = new String[2];
for (int i = 0; i <= yourStrings.length - 1; i++) {
//fist you have to remove the whitespaces
yourStrings[i] = yourStrings[i].replaceAll("\\s+", "");
hashObject = yourStrings[i].split(";;");
yourHashMap.put(hashObject[0], hashObject[1]);
}
Ihre Eingabezeichenfolge haben eine seltsame Format, empfehle ich Ihnen, es zu ändern.
Dies kompiliert in keiner Weise. a) '' String [] hashObject = ""; '', b) '' yourStrings.replaceAll ("\\ s +", ""); '' (Ein Array hat keine replaceAll-Methode, auch nicht die Neuer Wert für alles) – f1sh
Sie haben recht mit "a)", tut mir leid, aber "b)" funktioniert gut, string haben replaceAll seit v1.4 –
Nein, es funktioniert nicht gut. Sie müssen der Variable immer noch den neuen Wert zuweisen. Strings sind in Java unveränderlich. – f1sh
Sie haben vergessen, eine Frage zu stellen. –
Haben Sie einen Code, mit dem wir Ihnen helfen können? – f1sh