Aufteilen von Zeichenfolgen durch Leerzeichen, Beibehalten von Teilzeichenfolgen in Anführungszeichen in Java
Das Aufteilen einer Zeichenfolge durch Leerzeichen kann unkompliziert sein, wird jedoch komplexer, wenn es in Anführungszeichen gesetzt wird Teilzeichenfolgen müssen als ein einzelnes Token behandelt werden. Lassen Sie uns untersuchen, wie dies in Java erreicht werden kann.
Problemstellung:
Wie können wir die folgende Zeichenfolge in Leerzeichen aufteilen, wenn man bedenkt, dass in Anführungszeichen gesetzte Teilzeichenfolgen eine Einheit bleiben?
Location "Welcome to india" Bangalore Channai "IT city" Mysore
Die gewünschte Ausgabe sollte in einer Array-Liste gespeichert werden, wobei die Anführungszeichen erhalten bleiben Teilzeichenfolgen:
[Location, "Welcome to india", Bangalore, Channai, "IT city", Mysore]
Lösung:
Durch die Verwendung regulärer Ausdrücke können wir ein Muster definieren, das Teilzeichenfolgen zuordnet, die entweder keine Leerzeichen sind (" 1S") oder in Anführungszeichen gesetzte Teilzeichenfolgen (""(. ?)""). Das Muster ermöglicht außerdem optionale Leerzeichen („s“) nach den Übereinstimmungen.
String str = "Location \"Welcome to india\" Bangalore " + "Channai \"IT city\" Mysore"; List<String> list = new ArrayList<>(); Matcher m = Pattern.compile("([^\"]\S*|\".+?\")\s*").matcher(str); while (m.find()) list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes. System.out.println(list);
In dieser Lösung:
Ausgabe:
[Location, "Welcome to india", Bangalore, Channai, "IT city", Mysore]
Das obige ist der detaillierte Inhalt vonWie teile ich eine Zeichenfolge in Leerzeichen auf und behalte dabei Teilzeichenfolgen in Anführungszeichen in Java bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!