Maison >interface Web >js tutoriel >Comment analyser une chaîne CSV avec des virgules dans des champs entre guillemets en JavaScript ?

Comment analyser une chaîne CSV avec des virgules dans des champs entre guillemets en JavaScript ?

DDD
DDDoriginal
2024-12-03 00:27:15267parcourir

How to Parse a CSV String with Commas Inside Quoted Fields in JavaScript?

Cet extrait de code JavaScript vous permettra d'analyser une chaîne CSV contenant des virgules dans les données, tout en ignorant les virgules dans les champs entre guillemets :

const parseCSV = (csvString) => {
  const rows = csvString.split("\n");
  const result = [];
  for (const row of rows) {
    const values = [];
    let currentField = "";
    let inQuotes = false;
    for (const char of row) {
      if (char === '"' && currentField.length === 0) {
        inQuotes = !inQuotes;
      } else if (char === "," && !inQuotes) {
        values.push(currentField);
        currentField = "";
      } else {
        currentField += char;
      }
    }
    if (currentField.length > 0) {
      values.push(currentField);
    }
    result.push(values);
  }
  return result;
};

const csvString = 'string, duppi, du, 23, lala';
console.log(parseCSV(csvString));

Cette solution s'attaque à votre requête en utilisant un examen caractère par caractère de la chaîne CSV. Chaque fois qu'une virgule est détectée et que la chaîne ne se trouve pas dans un champ entre guillemets, un nouveau champ est généré. Lorsqu'un guillemet double est rencontré au début d'un champ, il indique le début d'un champ entre guillemets. Un autre guillemet double en dehors d’un champ entre guillemets signifie la fin de ce champ. En examinant constamment les valeurs, cette technique divise avec précision la chaîne CSV en champs individuels, en tenant compte des zones entre guillemets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn