Bagikan melalui


Bagaimana Budaya Mempengaruhi String dalam Visual Basic

Halaman Bantuan ini membahas bagaimana Visual Basic menggunakan informasi budaya untuk melakukan konversi dan perbandingan string.

Kapan Menggunakan String Khusus Budaya

Biasanya, Anda harus menggunakan string khusus budaya untuk semua data yang disajikan dan dibaca dari pengguna, dan menggunakan string budaya-invarian untuk data internal aplikasi Anda.

Misalnya, jika aplikasi Anda meminta pengguna untuk memasukkan tanggal sebagai string, aplikasi akan mengharapkan pengguna untuk memformat string sesuai dengan budaya mereka, dan aplikasi harus mengonversi string dengan tepat. Jika aplikasi Anda kemudian menampilkan tanggal tersebut di antarmuka penggunanya, aplikasi tersebut harus menampilkannya dalam budaya pengguna.

Namun, jika aplikasi mengunggah tanggal ke server pusat, aplikasi harus memformat string menurut satu budaya tertentu, untuk mencegah kebingungan antara format tanggal yang berpotensi berbeda.

Fungsi Peka Budaya

Semua fungsi konversi string Visual Basic (kecuali untuk fungsi Str dan Val ) menggunakan informasi budaya aplikasi untuk memastikan bahwa konversi dan perbandingan sesuai untuk budaya pengguna aplikasi.

Kunci agar berhasil menggunakan fungsi konversi string dalam aplikasi yang ada di komputer dengan pengaturan budaya yang berbeda adalah memahami fungsi mana yang menggunakan pengaturan budaya tertentu, dan yang menggunakan pengaturan budaya saat ini. Perhatikan bahwa pengaturan budaya pada aplikasi, secara default, diturunkan dari pengaturan budaya sistem operasi. Untuk informasi selengkapnya, lihat Asc, AscW, Chr, ChrW, Format, Hex, Oct, dan Fungsi Konversi Jenis .

Fungsi Str (mengubah angka menjadi string) dan Val (mengonversi string menjadi angka) tidak menggunakan informasi budaya aplikasi saat mengonversi antara string dan angka. Sebaliknya, mereka hanya mengenali titik (.) sebagai pemisah desimal yang valid. Analogi yang peka budaya dari fungsi-fungsi ini adalah:

  • Konversi yang menggunakan budaya saat ini. Fungsi CStr dan Format mengonversi angka menjadi string, dan fungsi CDbl dan CInt mengonversi string menjadi angka.

  • Konversi yang menggunakan budaya tertentu. Setiap objek angka memiliki metode ToString(IFormatProvider) yang mengonversi angka menjadi string, dan metode Parse(String, IFormatProvider) yang mengonversi string menjadi angka. Misalnya, jenis Double menyediakan metode ToString(IFormatProvider) dan Parse(String, IFormatProvider).

Untuk informasi lebih lanjut, lihat Str dan Val.

Menggunakan Budaya Tertentu

Bayangkan Anda sedang mengembangkan aplikasi yang mengirimkan tanggal (diformat sebagai string) ke layanan Web. Dalam hal ini, aplikasi Anda harus menggunakan budaya khusus untuk konversi string. Untuk mengilustrasikan alasannya, pertimbangkan hasil dari penggunaan metode ToString() tanggal: Jika aplikasi Anda menggunakan metode tersebut untuk memformat tanggal 4 Juli 2005, tampilannya akan berubah menjadi "7/4/2005 12:00:00 AM" saat dijalankan dengan Budaya Inggris Amerika Serikat (en-US), kemudian akan berubah menjadi "04.07.2005 00:00:00" saat dijalankan dengan budaya Jerman (de-DE).

Saat Anda perlu melakukan konversi string dalam format budaya tertentu, Anda harus menggunakan kelas CultureInfo yang dibangun ke dalam .NET Framework. Anda dapat membuat objek CultureInfo baru untuk budaya tertentu dengan meneruskan nama budaya ke konstruktor CultureInfo. Nama budaya yang didukung terdaftar di CultureInfo halaman Bantuan kelas.

Atau, Anda bisa mendapatkan contoh budaya invarian dari properti CultureInfo.InvariantCulture. Budaya invarian didasarkan pada budaya Inggris, tetapi ada beberapa perbedaan. Misalnya, budaya invarian menentukan pengaturan waktu 24 jam, bukan pengaturan waktu 12 jam.

Untuk mengonversi tanggal ke string budaya, gunakan metode meneruskan objek CultureInfo ke metode ToString(IFormatProvider) objek tanggal. Misalnya, kode berikut menampilkan "07/04/2005 00:00:00", terlepas dari pengaturan budaya di aplikasi.

Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))

Catatan

Tanggal literal selalu ditafsirkan sesuai dengan budaya Inggris.

Membandingkan String

Ada dua situasi penting di mana perbandingan string diperlukan:

  • Menyortir data untuk ditampilkan kepada pengguna. Gunakan operasi berdasarkan budaya saat ini sehingga string diurutkan dengan tepat.

  • Menentukan apakah dua string aplikasi-internal sama persis (biasanya untuk tujuan keamanan). Gunakan operasi yang mengabaikan budaya saat ini.

Anda dapat melakukan kedua jenis perbandingan dengan fungsi Visual Basic StrComp. Tetapkan argumen Compare opsional untuk mengontrol jenis perbandingan: Text agar sebagian besar input dan output Binary untuk menentukan kecocokan dengan tepat.

Fungsi StrComp mengembalikan bilangan bulat yang menunjukkan hubungan antara dua string yang dibandingkan dan berdasarkan urutan pengurutan. Nilai positif pada hasil menunjukkan bahwa string pertama lebih besar dari string kedua. Hasil negatif menunjukkan string pertama lebih kecil, dan nol menunjukkan kesetaraan antara string.

' Defines variables.
Dim testStr1 As String = "ABCD"
Dim testStr2 As String = "abcd"
Dim testComp As Integer
' The two strings sort equally. Returns 0.
testComp = StrComp(testStr1, testStr2, CompareMethod.Text)
' testStr1 sorts before testStr2. Returns -1.
testComp = StrComp(testStr1, testStr2, CompareMethod.Binary)
' testStr2 sorts after testStr1. Returns 1.
testComp = StrComp(testStr2, testStr1, CompareMethod.Binary)

Anda juga dapat menggunakan mitra .NET Framework dari fungsi StrComp, metode String.Compare. Hal ini merupakan metode statis dan berlebihan untuk kelas string dasar. Contoh berikut menggambarkan bagaimana metode ini digunakan:

Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)

Untuk kontrol yang lebih baik tentang cara melakukan perbandingan, Anda dapat menggunakan overload tambahan dari metode Compare. Dengan metode String.Compare, Anda dapat menggunakan argumen comparisonType untuk menentukan jenis perbandingan yang akan digunakan.

Nilai untuk comparisonType argumen Jenis perbandingan Waktu menggunakan
Ordinal Perbandingan berdasarkan byte komponen string. Gunakan nilai ini saat membandingkan: pengidentifikasi yang peka kondisi, pengaturan terkait keamanan, atau pengidentifikasi non-linguistik lainnya di mana byte harus sama persis.
OrdinalIgnoreCase Perbandingan berdasarkan byte komponen string.

OrdinalIgnoreCase menggunakan informasi budaya invarian untuk menentukan kapan dua karakter berbeda hanya dalam perihal kapitalisasi saja.
Gunakan nilai ini saat membandingkan: pengidentifikasi yang peka kondisi, pengaturan terkait keamanan, dan data yang disimpan di Windows.
CurrentCulture atau CurrentCultureIgnoreCase Perbandingan berdasarkan interpretasi string dalam budaya saat ini. Gunakan nilai ini saat membandingkan: data yang ditampilkan kepada pengguna, sebagian besar input pengguna, dan data lain yang memerlukan interpretasi linguistik.
InvariantCulture atau InvariantCultureIgnoreCase Perbandingan berdasarkan interpretasi string dalam budaya invarian.

Hal ini berbeda dari Ordinal dan OrdinalIgnoreCase, karena budaya invarian memperlakukan karakter di luar rentang yang diterima sebagai karakter invarian yang setara.
Gunakan nilai ini hanya saat membandingkan data yang bertahan atau menampilkan data yang relevan secara bahasa yang memerlukan urutan pengurutan tetap.

Pertimbangan Keamanan

Jika aplikasi Anda membuat keputusan keamanan berdasarkan hasil perbandingan atau operasi perubahan huruf besar-kecil, maka operasi tersebut harus menggunakan metode String.Compare, dan meneruskan Ordinal atau OrdinalIgnoreCase untuk argumen comparisonType.

Lihat juga