Rumah > hujung hadapan web > tutorial js > Bagaimanakah Ungkapan Biasa Boleh Menyelesaikan Masalah Menghuraikan Rentetan CSV dengan Koma dalam Medan Data dalam JavaScript?

Bagaimanakah Ungkapan Biasa Boleh Menyelesaikan Masalah Menghuraikan Rentetan CSV dengan Koma dalam Medan Data dalam JavaScript?

DDD
Lepaskan: 2024-12-07 04:14:10
asal
203 orang telah melayarinya

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

Parsable CSV Strings dalam JavaScript

Menghuraikan CSV dengan Koma dalam Data

Dalam situasi ini, anda memerlukan penyelesaian yang membezakan koma dalam tanda petikan daripada nilai-nilai yang memisahkan. Ungkapan biasa adalah alat yang ideal untuk tugas ini. Begini cara anda boleh mendekati perkara ini:

Penyelesaian Regex

  1. Tentukan Struktur Rentetan CSV: Tentukan ciri rentetan CSV yang sah, termasuk rentetan yang dipetik, aksara yang dilepaskan dan pemformatan data.
  2. Regex untuk CSV Pengesahan: Cipta regex yang mengesahkan sama ada rentetan tertentu memenuhi kriteria ini.
  3. Regex untuk Pengekstrakan Nilai: Bina regex untuk memadankan dan mengekstrak nilai individu daripada rentetan CSV yang sah, mempertimbangkan rentetan dan trailing yang dipetik dan tidak dipetik koma.

Pelaksanaan

// 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;
};
Salin selepas log masuk

Contoh Penggunaan

// 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']
Salin selepas log masuk

Pendekatan ini menghuraikan rentetan CSV secara berkesan, memelihara integriti nilai yang disebut dan mengendalikan koma dengan betul dalam medan data. Anda boleh melaraskan regex untuk menyesuaikan pengendalian variasi rentetan CSV tertentu atau keperluan pemformatan.

Atas ialah kandungan terperinci Bagaimanakah Ungkapan Biasa Boleh Menyelesaikan Masalah Menghuraikan Rentetan CSV dengan Koma dalam Medan Data dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan