Heim > Java > javaLernprogramm > Hauptteil

Wie teile ich eine Zeichenfolge in Leerzeichen auf und behalte dabei Teilzeichenfolgen in Anführungszeichen in Java bei?

Susan Sarandon
Freigeben: 2024-11-11 13:49:02
Original
991 Leute haben es durchsucht

How to Split a String on Spaces While Preserving Quoted Substrings in Java?

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

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);
Nach dem Login kopieren

In dieser Lösung:

  • Das Muster wird kompiliert und zum Abgleichen verwendet Tokens in der Zeichenfolge.
  • Übereinstimmende Tokens werden zur Array-Liste hinzugefügt.
  • Optional können umliegende Anführungszeichen entfernt werden erreicht durch die Verwendung von .replace(""", "") nach dem Hinzufügen von Token zur Liste.

Ausgabe:

[Location, "Welcome  to india", Bangalore, Channai, "IT city", Mysore]
Nach dem Login kopieren

  1. "

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage