Maison  >  Article  >  interface Web  >  Comment diviser une chaîne par virgules, en ignorant les virgules entre guillemets doubles à l'aide de JavaScript ?

Comment diviser une chaîne par virgules, en ignorant les virgules entre guillemets doubles à l'aide de JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 19:04:02230parcourir

How to Split a String by Commas, Ignoring Commas Within Double Quotes Using JavaScript?

Diviser une chaîne par virgules, en ignorant les virgules entre guillemets doubles à l'aide de JavaScript

Pour relever le défi de diviser une chaîne par des virgules tout en préservant les doubles -segments cités, nous pouvons utiliser des expressions régulières en JavaScript. Voici comment :

<code class="javascript">var str = 'a, b, c, "d, e, f", g, h';
var arr = str.match(/(&quot;.*?&quot;|[^&quot;,\s]+)(?=\s*,|\s*$)/g);

// Handle the case of no matches to prevent errors
arr = arr || [];

// Iterate over the matches and display them
for (var i = 0; i < arr.length; i++) {
  console.log('arr[' + i + '] =', arr[i]);
}</code>

Cette expression régulière utilise deux groupes de capture pour faire correspondre les sous-chaînes d'intérêt :

  • Groupe 1 : Correspond aux segments entre guillemets (" d, e, f") en utilisant un opérateur gourmand (.*?) pour tout capturer entre guillemets doubles.
  • Groupe 2 : Correspond à toute autre séquence de caractères (par exemple, "a", "g") qui ne contient pas de guillemets doubles, de virgules ou d'espaces ([^", s] ).

L'assertion d'anticipation (?=s*,|s*$) garantit que la correspondance est suivie soit d'un espace et d'une virgule, soit de la fin de la chaîne. Cela garantit que nous capturons uniquement les segments séparés par des virgules.

En faisant correspondre les segments entre guillemets et sans guillemets, cette solution divise avec précision la chaîne donnée en un tableau de six éléments : ["a", "b", "c ", "d, e, f", "g", "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