Быстрое добавление требований в наш проект. Поле в нашей базе данных для хранения телефонного номера настроено только на 10 символов. Итак, если я получу «(913) -444-5555» или что-то еще, есть ли быстрый способ запустить строку с помощью какой-то специальной функции замены, которую я могу передать ей набор символов, чтобы разрешить?
Regex?
c#
regex
string
phone-number
Мэтт Доуди
источник
источник
[^\d]
можно упростить до\D
Вы можете легко сделать это с помощью регулярного выражения:
источник
Вам не нужно использовать Regex.
источник
system.linq;
Вот способ сделать это методом расширения.
источник
Используя методы Regex в .NET, вы должны иметь возможность сопоставить любую нечисловую цифру с помощью \ D, например:
источник
Как насчет метода расширения, который не использует регулярное выражение.
Если вы все же придерживаетесь одного из параметров Regex, по крайней мере, используйте его
RegexOptions.Compiled
в статической переменной.Это основано на ответе Усмана Зафара, преобразованном в группу методов.
источник
для лучшей производительности и меньшего потребления памяти попробуйте следующее:
Результат на моем компьютере:
Init ...
Время: 307
Время: 2178
источник
Я уверен, что есть более эффективный способ сделать это, но, вероятно, я бы сделал это:
источник
попробуй это
источник
return newPhone.ToString();
вернет "System.Char []". Я думаю, вы имели в видуreturn new string(newPhone);
, но это также отфильтровывает числа 0 и 9 из-за>
и<
вместо>=
и<=
. Но даже тогда в строке будут конечные пробелы, потому чтоnewPhon
массив длиннее, чем должен быть.