Tambah cepat pada persyaratan dalam proyek kami. Bidang di DB kami untuk menyimpan nomor telepon diatur agar hanya memungkinkan 10 karakter. Jadi, jika saya melewati "(913) -444-5555" atau yang lainnya, apakah ada cara cepat untuk menjalankan string melalui semacam fungsi ganti khusus sehingga saya bisa mengopernya serangkaian karakter untuk diizinkan?
Regex?
c#
regex
string
phone-number
Matt Dawdy
sumber
sumber
[^\d]
dapat disederhanakan menjadi\D
Anda dapat melakukannya dengan mudah dengan regex:
sumber
Anda tidak perlu menggunakan Regex.
sumber
system.linq;
Inilah cara metode ekstensi untuk melakukannya.
sumber
Menggunakan metode Regex di .NET Anda harus dapat mencocokkan digit non-numerik menggunakan \ D, seperti:
sumber
Bagaimana dengan metode ekstensi yang tidak menggunakan regex.
Jika Anda tetap menggunakan salah satu opsi Regex setidaknya gunakan
RegexOptions.Compiled
dalam variabel statis.Ini didasarkan pada jawaban Usman Zafar yang dikonversi ke grup metode.
sumber
untuk kinerja terbaik dan konsumsi memori yang lebih rendah, coba ini:
Hasilnya di komputer saya adalah:
Init ...
Waktu: 307
Waktu: 2178
sumber
Saya yakin ada cara yang lebih efisien untuk melakukannya, tetapi saya mungkin akan melakukan ini:
sumber
coba ini
sumber
return newPhone.ToString();
akan mengembalikan "System.Char []". Saya pikir Anda maksudreturn new string(newPhone);
, Tapi ini juga menyaring angka 0 dan 9 karena>
dan<
bukan>=
dan<=
. Tetapi bahkan kemudian string akan memiliki spasi tambahan karenanewPhon
array lebih panjang dari yang seharusnya.