J'ai besoin d'analyser une chaîne afin que le résultat soit sorti de celui-ci: mais la chaîne que je reçoive pourrait ressembler davantage à ce que: p> Le point est, je ne sais pas à l'avance combien de virgules séparent les mots.
Y a-t-il une regex que je pourrais utiliser dans c # qui pourrait m'aider à résoudre ce problème? P> p>
5 Réponses :
Rechercher donc en C # qui pourrait ressembler à p> , + code> et remplacer tout avec , code>. , + code> signifie "correspondre à toutes les occurrences de deux virgules ou plus", de sorte que les virgules simples ne seront pas touchées. Cela peut également être écrit comme , {2,} code>. P> p>
Vous pouvez utiliser l'expression Vous aurez probablement besoin d'un , {2,} code> pour correspondre à toutes les occurrences de 2 virgules ou plus, puis remplacez-les par une seule virgule. Coupez CODE> Appelez-le aussi, pour supprimer les virgules de premier plan ou de fuite à gauche de la Regex.replace Code> appel. (Il est possible qu'il y ait une bonne façon de le faire avec une regrette de regérer, mais rien ne me ressort immédiatement.) P>
Une solution simple sans expressions régulières:
Bon à savoir cette solution! Merci !
En réalité, vous pouvez le faire sans appels de garniture.
text = Regex.Replace(text, "^,+|,+$|(?<=,),+", "");
Voici mon effort:
//Below is the test string
string test = "YK 002 10 23 30 5 TDP_XYZ "
private static string return_with_comma(string line)
{
line = line.TrimEnd();
line = line.Replace(" ", ",");
line = Regex.Replace(line, ",,+", ",");
string[] array;
array = line.Split(',');
for (int x = 0; x < array.Length; x++)
{
line += array[x].Trim();
}
line += "\r\n";
return line;
}
string result = return_with_comma(test);
//Output is
//YK,002,10,23,30,5,TDP_XYZ