c# summary - La mejor manera de obtener todos los dígitos de una cadena





tags remarks (5)


Simplemente elimine todos los no dígitos:

var result = Regex.Replace(input, @"\D", "");

¿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.




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



¿Necesitas usar un Regex?

return new String(input.Where(Char.IsDigit).ToArray());



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)




El uso de RegExp en JavaScript puede hacer el trabajo por usted, simplemente haga algo como a continuación:

var str ="Test abc test test abc test test test abc test test abc";
str = str.replace(/abc/g, '');

Si piensa en reutilizar, cree una función para que lo haga por usted, pero no se recomienda ya que es solo una función de línea, pero nuevamente si usa mucho esto, puede escribir algo como esto

String.prototype.replaceAll = String.prototype.replaceAll || function(string, replaced) {
  return this.replace(new RegExp(string, 'g'), replaced);
};

y simplemente úselo en su código una y otra vez como a continuación:

var str ="Test abc test test abc test test test abc test test abc";
str = str.replaceAll('abc', '');

Pero como mencioné anteriormente, no hará una gran diferencia en términos de líneas a escribir o de rendimiento, solo el almacenamiento en caché de la función puede efectuar un rendimiento más rápido en cadenas largas y también una buena práctica de código DRY si desea reutilizarlo.





c# regex text-parsing