1.7 KiB
1.7 KiB
Regex Beispiel
Am besten löst man das mit einem regulären Ausdruck, der entweder nach Inhalten in Anführungszeichen sucht oder nach Inhalten ohne Kommas.
Hier ist der passende Reguläre Ausdruck:
/"([^"\\]*(?:\\.[^"\\]*)*)"|([^,]+)/g
Wie der Regex funktioniert
Der Ausdruck nutzt das ODER-Prinzip (|), um zwei Szenarien zu matchen:
"([^"\\]*(?:\\.[^"\\]*)*)"(Gruppe 1): Matcht alles, was in doppelten Anführungszeichen steht. Er erlaubt sogar escaped Anführungszeichen (\") im Text.([^,]+)(Gruppe 2): Wenn keine Anführungszeichen da sind, matcht er alles bis zum nächsten Komma.
Anwendung in JavaScript (Beispiel)
Da du das Ergebnis sicherlich in einem Array von einzelnen Werten brauchst, kannst du den Regex wie folgt anwenden. Hierbei nutzen wir matchAll, um die Treffer sauber zu trennen und die Anführungszeichen direkt zu entfernen:
const input = '"very big, soft computer mouse","the cutest peripheral ever",10,39.90';
const regex = /"([^"\\]*(?:\\.[^"\\]*)*)"|([^,]+)/g;
const matches = [...input.matchAll(regex)];
const result = matches.map((match) => {
// Wenn Gruppe 1 existiert, war es ein String in Anführungszeichen
// Wenn Gruppe 2 existiert, war es ein unberührter Wert (Zahl)
const value = match[1] !== undefined ? match[1] : match[2].trim();
// Optional: Datentypen konvertieren
if (!isNaN(value) && value !== '') {
return Number(value);
}
return value;
});
console.log(result);
Das Ergebnis (Output)
Nach dem Parsen erhältst du ein sauberes Array, bei dem die Kommas innerhalb der Strings ignoriert wurden und die Zahlen einsatzbereit sind:
["very big, soft computer mouse", "the cutest peripheral ever", 10, 39.9]