Heim >Web-Frontend >js-Tutorial >Wie teile ich eine durch Kommas getrennte Zeichenfolge in JavaScript auf und behalte dabei den Inhalt in doppelten Anführungszeichen bei?

Wie teile ich eine durch Kommas getrennte Zeichenfolge in JavaScript auf und behalte dabei den Inhalt in doppelten Anführungszeichen bei?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 21:38:29294Durchsuche

How to Split a Comma-Separated String in JavaScript While Preserving Contents Within Double Quotes?

Aufteilen von Zeichenfolgen durch Kommas unter Beibehaltung von Inhalten in doppelten Anführungszeichen in JavaScript

Beim Umgang mit durch Kommas getrennten Zeichenfolgen in JavaScript ist die Handhabung von entscheidender Bedeutung Situationen, in denen doppelte Anführungszeichen verwendet werden, um bestimmte Abschnitte einzuschließen. Wenn Sie dies vernachlässigen, kann dies zu einer unbeabsichtigten Aufteilung führen.

Das Problem:

Bei einer durch Kommas getrennten Zeichenfolge besteht das Ziel darin, ein Array zu erhalten, das den Inhalt in doppelten Anführungszeichen beibehält . Zum Beispiel die Umwandlung von „a, b, c, „d, e, f“, g, h“ in ein Array aus sechs Elementen: [„a“, „b“, „c“, „d, e, f“ , "g", "h"].

Falscher Ansatz:

Verwendung der Methode split() mit einem regulären Ausdruck wie /, |"[^"] "/g teilt die Zeichenfolge falsch auf und extrahiert sogar den Inhalt innerhalb der doppelten Anführungszeichen.

Richtige Lösung:

Um dieses Szenario korrekt zu handhaben, ist ein maßgeschneiderter regulärer String erforderlich Ausdruck wird benötigt:

/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g

Erklärung:

  • (".*?"): Entspricht doppelten Anführungszeichen mit einer beliebigen Anzahl dazwischen liegender Zeichen .
  • |: Signalisiert eine „oder“-Bedingung.
  • [^",s] : Entspricht einem oder mehreren Zeichen, die keine doppelten Anführungszeichen, kein Komma oder kein Leerzeichen sind.
  • (?=s*,|s*$): Positive Lookahead-Behauptung, die sicherstellt, dass auf die Übereinstimmung entweder ein Komma und ein Leerzeichen oder das Ende der Zeichenfolge folgen.

Verwendung:

const str = 'a, b, c, "d, e, f", g, h';
const arr = str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);

for (let i = 0; i < arr.length; i++) {
  console.log(`arr[${i}] = ${arr[i]}`);
}

Ausgabe:

arr[0] = a
arr[1] = b
arr[2] = c
arr[3] = "d, e, f"
arr[4] = g
arr[5] = h

Das obige ist der detaillierte Inhalt vonWie teile ich eine durch Kommas getrennte Zeichenfolge in JavaScript auf und behalte dabei den Inhalt in doppelten Anführungszeichen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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