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?

Wie können reguläre Ausdrücke das Problem des Parsens von CSV-Strings mit Kommas in Datenfeldern in JavaScript lösen?

DDD
DDDOriginal
2024-12-07 04:14:10199Durchsuche

How Can Regular Expressions Solve the Problem of Parsing CSV Strings with Commas in Data Fields in JavaScript?

Parsbare CSV-Strings in JavaScript

CSV mit Kommas in Daten analysieren

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:

Die Regex-Lösung

  1. Definieren Sie die CSV-String-Struktur:Bestimmen Sie die Eigenschaften eines gültigen CSV-Strings, einschließlich Strings in Anführungszeichen. Escape-Zeichen und Datenformatierung.
  2. Regex für CSV-Validierung: Erstellen Sie einen regulären Ausdruck, der überprüft, ob eine bestimmte Zeichenfolge diese Kriterien erfüllt.
  3. Regex für die Wertextraktion: Erstellen Sie einen regulären Ausdruck, um einzelne Werte mit der gültigen CSV-Zeichenfolge abzugleichen und daraus zu extrahieren, und berücksichtigen Sie dabei Zeichenfolgen in Anführungszeichen und ohne Anführungszeichen und nachgestellte Kommas.

Implementierung

// 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;
};

Beispiel Verwendung

// 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!

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