Teilen Sie eine Zeichenfolge in Anführungszeichen mit einem Trennzeichen

7

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.

    
fastcodejava 22.05.2012, 02:48
quelle

5 Antworten

10

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.

    
Trevor Senior 03.12.2013, 15:23
quelle
4

Probieren Sie diesen hässlichen Code aus.

%Vor%     
Adeel Ansari 22.05.2012 03:35
quelle
3

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

    
Basilio German 22.05.2012 03:35
quelle
1

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.

    
nhahtdh 22.05.2012 04:23
quelle
1

commons-lang hat eine StrTokenizer-Klasse, die das für Sie erledigt, und es gibt auch die java-csv-Bibliothek.

Beispiel mit StrTokenizer:

%Vor%

Ausgabe:

%Vor%     
Matt 22.05.2012 03:35
quelle

Tags und Links