Mengabaikan huruf beraksen pada perbandingan string
Saya perlu membandingkan 2 string di C# dan mengobati huruf beraksen yang sama sebagai non-huruf beraksen. Misalnya:
string s1 = "hello";
string s2 = "héllo";
s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
s1.Equals(s2, StringComparison.OrdinalIgnoreCase);
Ini 2 string harus sama (sejauh yang saya aplikasi yang bersangkutan), namun kedua pernyataan ini mengevaluasi ke false. Apakah ada cara dalam C# untuk melakukan hal ini?
128
6
EDIT 2012-01-20: Oh boy! Solusi itu jadi jauh lebih sederhana dan telah dalam kerangka hampir selamanya. Seperti yang ditunjukkan oleh knightpfhor :
Berikut ini's fungsi yang strip diakritik dari string:
Rincian lebih lanjut di MichKap's blog (RIP...).
Prinsipnya adalah bahwa ternyata 'é' ke-2 berturut-turut karakter 'e', akut. Kemudian iterates melalui karakter dan melompat diakritik.
"héllo" menjadi "dia<akut>llo", yang pada gilirannya menjadi "hello".
Catatan: di Sini's lebih kompak .NET4+ versi ramah fungsi yang sama:
Jika anda don't perlu mengkonversi string dan anda hanya ingin memeriksa kesetaraan dapat anda gunakan
atau jika anda ingin perbandingan untuk menjadi peka juga
Berikut metode
CompareIgnoreAccents(...)
bekerja pada anda contoh data. Berikut ini adalah artikel mana saya mendapat informasi latar belakang: http://www.codeproject.com/KB/cs/EncodingAccents.aspxSaya pikir metode penyuluhan akan lebih baik:
Kemudian gunakan akan menjadi seperti ini:
Aku harus melakukan sesuatu yang mirip, tetapi dengan StartsWith metode. Berikut adalah solusi sederhana yang berasal dari @Serge - appTranslator.
Berikut adalah metode penyuluhan:
Dan untuk satu liners aneh ;)
Aksen incensitive dan kasus incensitive startsWith bisa disebut seperti ini
Cara yang lebih sederhana untuk menghilangkan aksen:
coba ini overload pada String.Membandingkan Metode.
String.Membandingkan Metode (String, String, Boolean, CultureInfo)
Ini menghasilkan int nilai berdasarkan membandingkan operasi termasuk cultureinfo. contoh di halaman membandingkan "Mengubah" di en-US dan en-CZ. CH di en-CZ single "surat".
contoh dari link
untuk itu bagi beraksen bahasa yang anda akan perlu untuk mendapatkan budaya yang kemudian menguji string berdasarkan itu.
http://msdn.microsoft.com/en-us/library/hyxc48dt.aspx