Existe-t-il un meilleur moyen de prendre une chaîne telle que "(123) 455-2344" et d'obtenir "1234552344" plutôt que de procéder ainsi:
var matches = Regex.Matches(input, @"[0-9]+", RegexOptions.Compiled);
return String.Join(string.Empty, matches.Cast<Match>()
.Select(x => x.Value).ToArray());
Peut-être un motif de regex qui peut le faire en une seule correspondance? Je n'arrivais pas à en créer un pour y arriver.
Avez-vous besoin d'utiliser un regex?
return new String(input.Where(Char.IsDigit).ToArray());
Avez-vous quelque chose contre Replace
?
return Regex.Replace(input, @"[^0-9]+", "");
Vous voudrez remplacer /\D/
(non numérique) par ''
(chaîne vide)
Regex r = new Regex(@"\D");
string s = Regex.Replace("(123) 455-2344", r, "");
Ou plus succinctement:
string s = Regex.Replace("(123) 455-2344", @"\D",""); //return only numbers from string
Il suffit de supprimer tous les non-chiffres:
var result = Regex.Replace(input, @"\D", "");
En Perl (vous pouvez l’adapter au C #), faites simplement
$str =~ s/[^0-9]//g;
Je suppose que votre chaîne est dans $ str. L'idée de base est de remplacer tous les chiffres non numériques par '' (c'est-à-dire une chaîne vide)