Ich möchte eine Zeichenfolge mit einem Delimiter-Leerraum teilen. aber es sollte intelligent mit Anführungszeichen umgehen. Z.B. für eine Zeichenfolge wie
%Vor%Es sollte drei Saiten John Smith, Ted und Barry zurückgeben.
Nachdem du damit herumgespielt hast, kannst du Regex dafür verwenden. Führen Sie das Äquivalent von "Alle übereinstimmen" ein:
%Vor%Ein Java-Beispiel:
%Vor%Ausgabe:
%Vor%Der Ausdruck für reguläre Ausdrücke mit dem oben verwendeten Beispiel kann hier eingesehen werden:
Nach all dem sollten reguläre Ausdrücke nicht die Lösung für alles sein - ich hatte nur Spaß. Dieses Beispiel hat viele Randfälle, wie die Handhabung von Unicode-Zeichen, Symbolen usw. Es wäre besser, eine erprobte und wahre Bibliothek für diese Art von Aufgabe zu verwenden. Sehen Sie sich die anderen Antworten an, bevor Sie diese verwenden.
Nun, ich habe ein kleines Snipet gemacht, das macht was du willst und noch ein paar Sachen. Da du keine weiteren Bedingungen angegeben hast, habe ich mir die Mühe nicht gemacht. Ich weiß, das ist ein schmutziger Weg und Sie können wahrscheinlich bessere Ergebnisse mit etwas, das bereits gemacht ist, erhalten. aber zum Spaß beim Programmieren hier ist das Beispiel:
%Vor%es wird auch nach Wörtern gesucht, die nicht durch ein Leerzeichen nach oder vor den Anführungszeichen getrennt wurden, z. B. die Wörter "Hallo" vor "John Smith" und nach "Basi German".
Wenn die Zeichenfolge in "John Smith" Ted Barry
geändert wird, ist die Ausgabe drei Zeichenfolgen.
1) "John Smith"
2) Ted
3) Barry
Die Zeichenfolge im Beispiel ist Hallo "John Smith" Ted Barry lol "Basi Deutsch" Hallo und Drucke 1) Hallo 2) "John Smith" 3) Ted 4) Barry 5) lol 6) "Basisch Deutsch" 7) Hallo
Ich hoffe, es hilft
Dies ist meine eigene Version, bereinigen Sie Ссылка (im Kommentar veröffentlicht). Es kann sich um Unicode kümmern. Es wird alle überflüssigen Leerzeichen bereinigen (sogar im Zitat) - dies kann gut oder schlecht sein, je nach Bedarf. Keine Unterstützung für entgangenes Angebot.
%Vor%Beispieleingabe zum Vergleich:
%Vor%(2. Zeile ist leer, 3. Zeile ist Leerzeichen, letzte Zeile ist falsch formatiert). Bitte beurteilen Sie mit Ihrer eigenen erwarteten Ausgabe, da es variieren kann, aber die Basis ist, dass der erste Fall [sdfskjf, sdfjkhsd, hfrif ehref, fksdfj sdkfj fkdsjf, sdf, sfssd] zurückgeben sollte.