Agregue rápidamente el requisito en nuestro proyecto. Un campo en nuestro DB para contener un número de teléfono está configurado para permitir solo 10 caracteres. Entonces, si me pasa "(913) -444-5555" o cualquier otra cosa, ¿hay una manera rápida de ejecutar una cadena a través de algún tipo de función de reemplazo especial que pueda pasarle un conjunto de caracteres para permitir?
Regex?
c#
regex
string
phone-number
Matt Dawdy
fuente
fuente
[^\d]
se puede simplificar a\D
Puedes hacerlo fácilmente con regex:
fuente
No necesitas usar Regex.
fuente
system.linq;
Aquí está la forma del método de extensión de hacerlo.
fuente
Usando los métodos Regex en .NET, debería poder hacer coincidir cualquier dígito no numérico usando \ D, de esta manera:
fuente
¿Qué tal un método de extensión que no utiliza expresiones regulares?
Si se apega a una de las opciones de Regex, al menos úsela
RegexOptions.Compiled
en la variable estática.Esto se basa en la respuesta de Usman Zafar convertida en un grupo de métodos.
fuente
para obtener el mejor rendimiento y un menor consumo de memoria, intente esto:
El resultado en mi computadora es:
Init ...
Hora: 307
Hora: 2178
fuente
Estoy seguro de que hay una manera más eficiente de hacerlo, pero probablemente haría esto:
fuente
prueba esto
fuente
return newPhone.ToString();
devolverá "System.Char []". Creo que quisiste decirreturn new string(newPhone);
, pero esto también está filtrando los números 0 y 9 por el>
y en<
lugar de>=
y<=
. Pero incluso entonces, la cadena tendrá espacios finales porque lanewPhon
matriz es más larga de lo necesario.