Bagikan melalui


Melakukan perubahan huruf besar/keci yang tidak peka budaya

Metode String.ToUpper, String.ToLower, Char.ToUpper, dan Char.ToLower memberikan overload yang tidak menerima parameter apa pun. Secara default, overload ini tanpa parameter melakukan perubahan huruf besar-kecil berdasarkan nilai CultureInfo.CurrentCulture. Hal ini menghasilkan hasil peka huruf besar/kecil yang dapat bervariasi berdasarkan budaya. Untuk memperjelas apakah Anda ingin perubahan peka huruf besar/kecil menjadi peka budaya atau tidak peka budaya, Anda harus menggunakan overload metode ini yang mengharuskan Anda menetapkan parameter culture secara eksplisit. Untuk perubahan huruf besar/keci yang peka terhadap budaya, tentukan CultureInfo.CurrentCulture untuk parameter culture. Untuk perubahan huruf besar/keci yang tidak peka budaya, tentukan CultureInfo.InvariantCulture untuk parameter culture.

Sering kali, string dikonversi ke huruf standar untuk memungkinkan pencarian yang lebih mudah nanti. Saat string digunakan dengan cara ini, Anda harus menentukan CultureInfo.InvariantCulture untuk parameter culture, karena nilai Thread.CurrentCulture berpotensi berubah antara waktu perubahan huruf besar/keci dan waktu pencarian dilakukan.

Jika keputusan keamanan didasarkan pada operasi perubahan huruf besar/keci, operasi tersebut harus peka terhadap budaya untuk memastikan bahwa hasilnya tidak terpengaruh oleh nilai CultureInfo.CurrentCulture. Lihat bagian "Perbandingan String yang Menggunakan Budaya Saat Ini" dari artikel Praktik Terbaik untuk Menggunakan String untuk contoh yang menunjukkan bagaimana operasi string yang peka terhadap budaya dapat menghasilkan hasil yang tidak konsisten.

String.ToUpper and String.ToLower

Untuk kejelasan kode, disarankan String.ToUpper agar Anda selalu menggunakan kelebihan beban metode dan String.ToLower yang memungkinkan Anda menentukan budaya secara eksplisit. Misalnya, kode berikut melakukan pencarian pengidentifikasi. Operasi key.ToLower peka budaya secara default, tetapi perilaku ini tidak jelas dalam membaca kode.

Contoh

Shared Function LookupKey(key As String) As Object
   Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key)
{
    return internalHashtable[key.ToLower()];
}

Jika Anda ingin key.ToLower operasi tidak peka terhadap budaya, ubah contoh sebelumnya sebagai berikut untuk digunakan CultureInfo.InvariantCulture secara eksplisit saat mengubah kasus.

Shared Function LookupKey(key As String) As Object
    Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture))
End Function
static object LookupKey(string key)
{
    return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)];
}

Char.ToUpper and Char.ToLower

Char.ToUpper Meskipun metode dan Char.ToLower memiliki karakteristik yang sama dengan String.ToUpper metode dan String.ToLower , satu-satunya budaya yang terpengaruh adalah Turki (Türkiye) dan Azerbaijan (Latin, Azerbaijan). Ini adalah satu-satunya dua budaya dengan perbedaan kapital karakter tunggal. Untuk detail selengkapnya tentang pemetaan kasus unik ini, lihat bagian "Casing" dalam String dokumentasi kelas. Untuk kejelasan kode dan untuk memastikan hasil yang konsisten, disarankan agar Anda selalu menggunakan kelebihan beban metode ini yang menerima CultureInfo parameter.

Lihat juga