Maison > développement back-end > C++ > Comment diviser une chaîne en C# en utilisant Regex pour gérer les virgules entre guillemets ?

Comment diviser une chaîne en C# en utilisant Regex pour gérer les virgules entre guillemets ?

Mary-Kate Olsen
Libérer: 2025-01-07 22:11:41
original
611 Les gens l'ont consulté

"How

Utiliser des expressions régulières pour diviser des chaînes en C# : traiter des virgules entre guillemets

Dans divers scénarios tels que l'analyse de données ou les opérations de chaîne SQL, les chaînes contenant des virgules peuvent devoir être divisées à l'aide d'expressions régulières. Cependant, des problèmes surviennent lorsque des virgules apparaissent à l’intérieur et à l’extérieur des guillemets.

Considérons la chaîne suivante :

<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>
Copier après la connexion

Notre objectif est de diviser cette chaîne en ses composants à l'aide d'expressions régulières afin d'obtenir le résultat suivant :

  • 'ABCDEFG'
  • 123542
  • 'XYZ 99,9'

La clé est de reconnaître les virgules en dehors des guillemets. Pour cela, nous pouvons utiliser le puissant modèle d'expression régulière :

<code>",(?=(?:[^']*'[^']*')*[^']*$)"</code>
Copier après la connexion

Décomposons ce modèle :

  • " : correspond à une virgule littérale.

  • (?=(?:[^']*'[^']*')*[^']*$) : Il s'agit d'une assertion anticipée qui vérifie si une virgule est suivie d'un nombre pair de guillemets.

    • (?:[^']*'[^']*')* : fait correspondre n'importe quel nombre de paires de guillemets simples avec le contenu entre eux.
    • [^']*$ : correspond à n’importe quel caractère après le dernier guillemet, mais sans compter le guillemet.

En utilisant ce modèle, nous pouvons faire correspondre n'importe quelle virgule suivie d'un nombre pair de guillemets, garantissant ainsi que nous ne divisons la chaîne qu'en dehors des guillemets.

Pour utiliser cette expression régulière pour le fractionnement, nous utiliserons le code C# suivant :

<code class="language-csharp">var result = Regex.Split(samplestring, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>
Copier après la connexion

Après avoir exécuté ce code, result contiendra un tableau de chaînes, chaque chaîne représentant un composant de la chaîne d'origine, divisée selon les conditions souhaitées.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal