Heim > Java > javaLernprogramm > Wie kann ich durch Kommas getrennten Text unter Beibehaltung von Anführungszeichen aufteilen?

Wie kann ich durch Kommas getrennten Text unter Beibehaltung von Anführungszeichen aufteilen?

Susan Sarandon
Freigeben: 2024-12-02 02:21:10
Original
474 Leute haben es durchsucht

How Can I Split Comma-Separated Text While Preserving Quotes?

Text mithilfe von Kommas unter Beibehaltung von Anführungszeichen aufteilen

Beim Parsen von durch Kommas getrenntem Text ist es wichtig, mit Situationen umzugehen, in denen Kommas in Teilzeichenfolgen in Anführungszeichen erscheinen. wie zum Beispiel dieses Beispiel:

123,test,444,"don't split, this",more test,1
Nach dem Login kopieren

Teilen Sie diese Zeichenfolge mithilfe von in Kommas auf Die Standardmethode String.split(",") ergibt:

123
test
444
"don't split
 this"
more test
1
Nach dem Login kopieren

Wie Sie sehen können, wird das Komma im Zitat „Don't split, this“ fälschlicherweise als Trennzeichen interpretiert.

Um dieses Problem anzugehen, ist ein ausgefeilterer Ansatz erforderlich. In diesem Fall können wir einen regulären Ausdruck verwenden, um die Zeichenfolge in Kommas aufzuteilen, denen keine gerade Anzahl doppelter Anführungszeichen folgt. Dadurch wird sichergestellt, dass Kommas in Teilzeichenfolgen in Anführungszeichen nicht mit Trennzeichen verwechselt werden.

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Nach dem Login kopieren

Dieser reguläre Ausdruck verwendet die folgende Logik:

  • (?=): Look-ahead Behauptung, die Folgendes sicherstellt:

    • (?:[^"]*"[^"]*")*: Stimmt mit einer beliebigen Anzahl von überein Teilzeichenfolgen, die in doppelte Anführungszeichen eingeschlossen sind.
    • [^"]*: Entspricht einer beliebigen Anzahl von Zeichen, die keine Anführungszeichen sind.
    • $: End-of-String-Assertion.

Mit anderen Worten: Dieser Look-Ahead prüft, ob auf das aktuelle Komma eine gerade Anzahl doppelter Anführungszeichen und das Ende der Zeichenfolge If folgt Wenn dies der Fall ist, bedeutet dies, dass das Komma nicht in einem Teilstring in Anführungszeichen steht und als Trennzeichen betrachtet werden kann.

Sie können auch eine vereinfachte Version des regulären Ausdrucks verwenden:

str.split("(?x)  ,  (?=  (?:  [^\"]*  \"  [^\"]*  \"  )*  [^\"]*  $  )");
Nach dem Login kopieren

In dieser Version wird der Modifikator (?x) verwendet, um die Lesbarkeit des regulären Ausdrucks zu verbessern, indem Leerzeichen ignoriert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennten Text unter Beibehaltung von Anführungszeichen aufteilen?. 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