Hé les gars, j'ai des chaînes comme celui-ciSupprimer les espaces dans les cordes
"This_ ___is_a_ _string."
, et je veux transformer tous les espaces multiples en un seul. Y a-t-il des fonctions en C# qui peuvent faire cela?
Merci
Hé les gars, j'ai des chaînes comme celui-ciSupprimer les espaces dans les cordes
"This_ ___is_a_ _string."
, et je veux transformer tous les espaces multiples en un seul. Y a-t-il des fonctions en C# qui peuvent faire cela?
Merci
var s = "This is a string with multiple white space";
Regex.Replace(s, @"\s+", " "); // "This is a string with multiple white space"
Regex r = new Regex(@"\s+");
string stripped = r.Replace("Too many spaces", " ");
Les exemples regex sur cette page sont probablement bien mais voici une solution sans regex:
string myString = "This is a string.";
string myNewString = "";
char previousChar = ' ';
foreach(char c in myString)
{
if (!(previousChar == ' ' && c == ' '))
myNewString += c;
previousChar = c;
}
Voici une belle façon sans regex. Avec Linq.
var astring = "This is a string with to many spaces.";
astring = string.Join(" ", astring.Split(' ').Where(m => m != string.Empty));
sortie "This is a string with to many spaces"
Vous pouvez également utiliser StringSplitOptions.RemoveEmptyEntries sur l'appel astring.Split() pour supprimer votre filtre Where. – ahawker
Vous devriez vraiment essayer d'éviter la concaténation de chaînes multiples ... –
D'accord @ David, il y a optimalisations à faire, mais en utilisant un 'StringBuilder', ou similaires, aurait fait mon exemple plus difficile à comprendre. Donner 'myNewString' et' previousChar' une valeur initiale n'est pas non plus optimisé, mais j'essaie simplement de faire une suggestion sur la façon d'aborder le problème sans regex. N'hésitez pas à le rendre "parfait" :) – Bazzz