Adição rápida de requisitos em nosso projeto. Um campo em nosso banco de dados para armazenar um número de telefone é definido para permitir apenas 10 caracteres. Portanto, se eu passar "(913) -444-5555" ou qualquer outra coisa, existe uma maneira rápida de executar uma string através de algum tipo de função de substituição especial que eu possa transmitir a ela um conjunto de caracteres para permitir?
Regex?
c#
regex
string
phone-number
Matt Dawdy
fonte
fonte
[^\d]
pode ser simplificada para\D
Você pode fazer isso facilmente com o regex:
fonte
Você não precisa usar o Regex.
fonte
system.linq;
Aqui está a maneira do método de extensão de fazer isso.
fonte
Usando os métodos Regex no .NET, você poderá corresponder a qualquer dígito não numérico usando \ D, assim:
fonte
Que tal um método de extensão que não use regex.
Se você se ater a uma das opções de Regex, pelo menos use
RegexOptions.Compiled
na variável estática.Isso se baseia na resposta de Usman Zafar convertida em um grupo de métodos.
fonte
para obter o melhor desempenho e menor consumo de memória, tente o seguinte:
O resultado no meu computador é:
Init ...
Time: 307
Time: 2178
fonte
Tenho certeza de que existe uma maneira mais eficiente de fazer isso, mas provavelmente faria isso:
fonte
tente isso
fonte
return newPhone.ToString();
retornará "System.Char []". Eu acho que você quis dizerreturn new string(newPhone);
, mas isso também está filtrando os números 0 e 9 por causa do>
e em<
vez de>=
e<=
. Mas, mesmo assim, a string terá espaços à direita, porque anewPhon
matriz é mais longa do que precisa.