Rumah >pembangunan bahagian belakang >C++ >Mengapa Pembatas Ekspresi Biasa Saya Tidak Berfungsi dalam C#?
Memahami Sintaks Ungkapan Biasa dalam C#
Apabila bekerja dengan ungkapan biasa dalam C#, anda mungkin menghadapi masalah jika anda cuba menggunakan pembatas seperti garis miring ke hadapan (/
), yang biasa digunakan dalam bahasa seperti PHP atau JavaScript. Mari kita periksa mengapa ini tidak berfungsi dalam C# dan cara melaksanakan ungkapan biasa dengan betul.
Masalah timbul daripada cubaan menggunakan ungkapan biasa seperti ini (salah):
"name = dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487\nname = Regex.Replace(name, @"/\W/g", "")"
Kod ini cuba mengalih keluar "/", "-", dan "." menggunakan pembatas. Walau bagaimanapun, C# mengendalikan ungkapan biasa secara berbeza. Pembatas tidak diperlukan dan, sebenarnya, akan menyebabkan ralat.
Pendekatan yang Betul dalam C#
Untuk mentakrifkan ungkapan biasa dalam C#, gunakan simbol @
untuk mencipta rentetan verbatim literal. Ini menghalang C# daripada mentafsir urutan pelarian dalam rentetan. Anda juga perlu melarikan diri dengan betul daripada aksara khas dalam regex itu sendiri.
Kod yang diperbetulkan untuk mengalih keluar aksara bukan abjad angka (W
) ialah:
<code class="language-csharp">name = Regex.Replace(name, @"\W", "");</code>
Barisan tunggal kod ini dengan berkesan menggantikan semua aksara bukan abjad angka dalam rentetan name
dengan rentetan kosong, mencapai hasil yang diingini tanpa memerlukan pembatas. Ingat bahawa W
ialah kelas aksara regex yang sepadan dengan mana-mana aksara bukan abjad angka.
Atas ialah kandungan terperinci Mengapa Pembatas Ekspresi Biasa Saya Tidak Berfungsi dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!