2016-03-29 3 views
-2

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 ......

+4

Sie haben vergessen, eine Frage zu stellen. –

+0

Haben Sie einen Code, mit dem wir Ihnen helfen können? – f1sh

Antwort

1

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

-1

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.

+0

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

+0

Sie haben recht mit "a)", tut mir leid, aber "b)" funktioniert gut, string haben replaceAll seit v1.4 –

+0

Nein, es funktioniert nicht gut. Sie müssen der Variable immer noch den neuen Wert zuweisen. Strings sind in Java unveränderlich. – f1sh

Verwandte Themen