/ / Comment puis-je transformer correctement une chaîne en liste de mots et de signes de ponctuation? - C chaîne

Comment transformer correctement une chaîne en liste de mots et de signes de ponctuation? - C chaîne

J'ai de la ficelle: IDLIST, ID NAME;. Et besoin de le transformer en liste: {"IDLIST", ",", "ID", "NAME", ";"}.

Il est évident de couper une chaîne par des espaces libres, mais que faire avec des signes de ponctuation?

Les mots peuvent être n'importe quel jeu de lettres. Les signes de ponctuation peuvent aussi être n'importe lesquels.

Réponses:

7 pour la réponse № 1

Vous pourriez utiliser Regex.Split fonctionne comme ci-dessous,

string value = "IDLIST, ID NAME;";
string[] lines = Regex.Split(value, @"s+|(?!^)(?=p{P})|(?<=p{P})(?!$)");
foreach (string line in lines) {
Console.WriteLine(line);

DEMO

OU

Vous pouvez faire correspondre toutes les ponctuations ou les alphabets, puis ajouter les chaînes correspondantes à une liste.

@"p{P}|p{L}+"

DEMO

p{P} correspond à tout type de signes de ponctuation et p{L} correspond à tout type de lettre de n'importe quelle langue.