c# - example - La mejor manera de obtener todos los dígitos de una cadena
remarks c# (5)
¿Necesitas usar un Regex?
return new String(input.Where(Char.IsDigit).ToArray());
¿Hay alguna forma mejor de obtener una cadena como "(123) 455-2344" y obtener "1234552344" de esto que hacer esto?
var matches = Regex.Matches(input, @"[0-9]+", RegexOptions.Compiled);
return String.Join(string.Empty, matches.Cast<Match>()
.Select(x => x.Value).ToArray());
Tal vez un patrón de expresiones regulares que puede hacerlo en una sola coincidencia? Aunque no pude crear uno para lograr eso.
¿Tienes algo en contra de Replace
?
return Regex.Replace(input, @"[^0-9]+", "");
En Perl (puede adaptar esto a C #) simplemente haga
$str =~ s/[^0-9]//g;
Estoy asumiendo que su cadena está en $ str. La idea básica es reemplazar todos los no dígitos con '''' (es decir, una cadena vacía)
Querrá reemplazar //D/
(sin dígitos) con ''''
(cadena vacía)
Regex r = new Regex(@"/D");
string s = Regex.Replace("(123) 455-2344", r, "");
O más sucintamente:
string s = Regex.Replace("(123) 455-2344", @"/D",""); //return only numbers from string
Simplemente elimine todos los no dígitos:
var result = Regex.Replace(input, @"/D", "");