Heim >Web-Frontend >js-Tutorial >Wie können reguläre Ausdrücke das Problem des Parsens von CSV-Strings mit Kommas in Datenfeldern in JavaScript lösen?
In dieser Situation benötigen Sie eine Lösung, die Kommas in Anführungszeichen von unterscheidet die trennenden Werte. Ein regulärer Ausdruck ist das ideale Werkzeug für diese Aufgabe. So können Sie dies angehen:
// Regex to validate a CSV string const re_valid = /^\s*(?:'[^'\]*(?:\[\S\s][^'\]*)*'|"[^"\]*(?:\[\S\s][^"\]*)*"|[^,'"\s\]*(?:\s+[^,'"\s\]+)*)\s*(?:,\s*(?:'[^'\]*(?:\[\S\s][^'\]*)*'|"[^"\]*(?:\[\S\s][^"\]*)*"|[^,'"\s\]*(?:\s+[^,'"\s\]+)*)\s*)*$/ // Regex to parse one value from a valid CSV string const re_value = /(?!\s*$)\s*(?:'([^'\]*(?:\[\S\s][^'\]*)*)'|"([^"\]*(?:\[\S\s][^"\]*)*)"|([^,'"\s\]*(?:\s+[^,'"\s\]+)*))\s*(?:,|$)/g // Function to parse CSV string into array const CSVtoArray = (text) => { // Validate CSV string if (!re_valid.test(text)) return null; const values = []; text.replace(re_value, (m0, m1, m2, m3) => { // Handle single-quoted values if (m1 !== undefined) values.push(m1.replace(/\'/g, "'")); // Handle double-quoted values else if (m2 !== undefined) values.push(m2.replace(/\"/g, '"')); // Handle unquoted values else if (m3 !== undefined) values.push(m3); return ''; }); // Handle special case of empty last value if (/,\s*$/.test(text)) values.push(''); return values; };
// Sample CSV string with commas in data const csvString = "'string, with comma', 23, 'lala'"; // Parse the CSV string into an array of values const values = CSVtoArray(csvString); console.log(values); // ['string, with comma', '23', 'lala']
Dieser Ansatz analysiert die CSV-Zeichenfolge effektiv, bewahrt die Integrität der Werte in Anführungszeichen und behandelt Kommas in Datenfeldern korrekt. Sie können den regulären Ausdruck anpassen, um die Handhabung bestimmter CSV-String-Variationen oder Formatierungsanforderungen anzupassen.
Das obige ist der detaillierte Inhalt vonWie können reguläre Ausdrücke das Problem des Parsens von CSV-Strings mit Kommas in Datenfeldern in JavaScript lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!