Préserver les délimiteurs lors du fractionnement de chaînes en C#
Souvent, vous devez diviser une chaîne à l'aide de délimiteurs spécifiques, mais vous souhaitez également conserver ces délimiteurs dans le tableau résultant. Cet article présente une méthode fiable en C# utilisant des expressions régulières.
La solution : les expressions régulières
La méthodeC# Regex.Split
, combinée à une expression régulière intelligemment conçue, fournit la solution. La clé consiste à utiliser des assertions positives. Un lookbehind positif garantit qu'un modèle existe avant la position actuelle sans inclure ce modèle dans la correspondance elle-même.
Modèle d'expression régulière :
Ce modèle recherche les délimiteurs (virgules, points et points-virgules dans cet exemple) tout en garantissant qu'ils restent dans la sortie :
<code class="language-csharp">(?<=(?:[,.;]))</code>
(?<=...)
: Il s’agit d’une affirmation positive.(?:[,.;])
: Il s'agit d'un groupe sans capture correspondant à une virgule, un point ou un point-virgule.Exemple de code :
Illustrons avec du code :
<code class="language-csharp">using System.Text.RegularExpressions; // ... other code ... string originalString = "This,is,a,comma,separated,string."; string[] parts = Regex.Split(originalString, @"(?<=(?:[,.;]))"); // parts array will contain: // ["This",",","is",",","a",",","comma",",","separated",",","string","."] </code>
L'expression régulière divise la chaîne aux points suivant immédiatement chaque délimiteur. Étant donné que le délimiteur lui-même n'est pas inclus dans la correspondance, il est conservé dans le tableau résultant.
Sortie :
Le résultat montre que la chaîne d'origine est divisée et que chaque délimiteur est inclus en tant qu'élément distinct dans le tableau résultant. Le lookbehind positif garantit que les délimiteurs font partie de la division sans être absorbés dans les segments de chaîne.
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!