Maison >interface Web >js tutoriel >Comment diviser une chaîne séparée par des virgules en JavaScript tout en préservant le contenu entre guillemets doubles ?

Comment diviser une chaîne séparée par des virgules en JavaScript tout en préservant le contenu entre guillemets doubles ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 21:38:29265parcourir

How to Split a Comma-Separated String in JavaScript While Preserving Contents Within Double Quotes?

Diviser les chaînes avec des virgules tout en préservant le contenu des guillemets doubles en JavaScript

Lorsque vous traitez des chaînes séparées par des virgules en JavaScript, il est crucial de gérer situations où des guillemets doubles sont utilisés pour délimiter certaines sections. Négliger cela peut entraîner un fractionnement involontaire.

Le problème :

Étant donné une chaîne séparée par des virgules, l'objectif est d'obtenir un tableau préservant le contenu entre guillemets doubles. . Par exemple, transformer "a, b, c, "d, e, f", g, h" en un tableau de six éléments : ["a", "b", "c", "d, e, f" , "g", "h"].

Approche incorrecte :

Utilisation de la méthode split() avec une expression régulière comme /, |"[^"] "/g divisera la chaîne de manière incorrecte, extrayant même le contenu entre guillemets.

Solution correcte :

Pour gérer correctement ce scénario, un script régulier plus adapté une expression est nécessaire :

/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g

Explication :

  • (".*?") : correspond aux guillemets doubles avec n'importe quel nombre de caractères entre les deux .
  • | : signalant une condition "ou".
  • [^",s] : correspond à un ou plusieurs caractères sans guillemets, sans virgules et sans espace.
  • (?=s*,|s*$) : assertion d'anticipation positive qui garantit que la correspondance est suivie soit d'une virgule et d'un espace, soit de la fin de la chaîne.

Utilisation :

const str = 'a, b, c, "d, e, f", g, h';
const arr = str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);

for (let i = 0; i < arr.length; i++) {
  console.log(`arr[${i}] = ${arr[i]}`);
}

Sortie :

arr[0] = a
arr[1] = b
arr[2] = c
arr[3] = "d, e, f"
arr[4] = g
arr[5] = h

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