Heim > Java > javaLernprogramm > Wie teile ich eine Zeichenfolge durch Leerzeichen auf und ignoriere Leerzeichen in Anführungszeichen?

Wie teile ich eine Zeichenfolge durch Leerzeichen auf und ignoriere Leerzeichen in Anführungszeichen?

Mary-Kate Olsen
Freigeben: 2024-12-16 02:07:09
Original
655 Leute haben es durchsucht

How to Split a String by Spaces, Ignoring Spaces Within Quotes?

Aufteilen von Zeichenfolgen mit Leerzeichen, die nicht in Anführungszeichen eingeschlossen sind

In diesem Zusammenhang suchen wir nach einer Lösung, um eine Zeichenfolge mithilfe von Leerzeichen in Komponenten zu unterteilen nicht in einfache oder doppelte Anführungszeichen gesetzt. Dies ist eine differenzierte Aufgabe, die eine sorgfältige Regex-Erstellung erfordert.

Eine effektive Lösung besteht darin, einen Regex zu erstellen, der zwei Arten von Elementen erfasst:

  1. Anführungszeichenketten:Sequenzen Anzahl der Zeichen in einfachen oder doppelten Anführungszeichen, ohne interne Anführungszeichen.
  2. Ohne Anführungszeichen Wörter: Zeichenfolgen, die keine Leerzeichen oder Anführungszeichen enthalten.

Um diese Elemente abzugleichen, können wir den folgenden regulären Ausdruck verwenden:

[^\s"']+|"([^"]*)"|'([^']*)'
Nach dem Login kopieren

In diesem regulären Ausdruck:

  • [^\s"'] : Treffer ohne Anführungszeichen Wörter.
  • |"([^"]*)"|: Entspricht Zeichenfolgen in doppelten Anführungszeichen, mit Ausnahme der Anführungszeichen.
  • |'([^']*)'|: Entspricht Zeichenfolgen in einfachen Anführungszeichen Zeichenfolgen in Anführungszeichen, ohne Anführungszeichen.

Bei der Implementierung dieser Lösung in Java können wir Folgendes verwenden Code:

Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);

List<String> matchList = new ArrayList<>();
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        // Double-quoted string without quotes
        matchList.add(regexMatcher.group(1));
    } else if (regexMatcher.group(2) != null) {
        // Single-quoted string without quotes
        matchList.add(regexMatcher.group(2));
    } else {
        // Unquoted word
        matchList.add(regexMatcher.group());
    }
}
Nach dem Login kopieren

Dieser Ansatz erfasst geschickt beide Arten von Elementen und bietet eine robuste Lösung für das gegebene Problem.

Das obige ist der detaillierte Inhalt vonWie teile ich eine Zeichenfolge durch Leerzeichen auf und ignoriere Leerzeichen in Anführungszeichen?. 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