Szybkie dodanie wymagań w naszym projekcie. Pole w naszej bazie danych do przechowywania numeru telefonu jest ustawione na dopuszczenie tylko 10 znaków. Tak więc, jeśli zostanie mi przekazany „(913) -444-5555” lub cokolwiek innego, czy istnieje szybki sposób na uruchomienie ciągu za pomocą jakiejś specjalnej funkcji zamiany, na którą mogę przekazać zestaw znaków, aby zezwolić?
Regex?
c#
regex
string
phone-number
Matt Dawdy
źródło
źródło
[^\d]
można uprościć do\D
Możesz to łatwo zrobić za pomocą wyrażenia regularnego:
źródło
Nie musisz używać Regex.
źródło
system.linq;
Oto sposób, w jaki można to zrobić.
źródło
Używając metod Regex w .NET, powinieneś być w stanie dopasować dowolną cyfrę nieliczbową za pomocą \ D, na przykład:
źródło
Co powiesz na metodę rozszerzenia, która nie używa wyrażenia regularnego.
Jeśli trzymasz się jednej z opcji Regex, użyj przynajmniej
RegexOptions.Compiled
w zmiennej statycznej.Opiera się to na odpowiedzi Usmana Zafara przekonwertowanej na grupę metod.
źródło
aby uzyskać najlepszą wydajność i mniejsze zużycie pamięci, spróbuj tego:
Wynik w moim komputerze to:
Init ...
Time: 307
Time: 2178
źródło
Jestem pewien, że istnieje bardziej skuteczny sposób, aby to zrobić, ale prawdopodobnie zrobiłbym to:
źródło
Spróbuj tego
źródło
return newPhone.ToString();
zwróci „System.Char []”. Myślę, że miałeś na myślireturn new string(newPhone);
, ale to również jest odfiltrowywanie liczb 0 i 9 z powodu>
i<
zamiast>=
i<=
. Ale nawet wtedy string będzie miał końcowe spacje, ponieważnewPhon
tablica jest dłuższa niż powinna.