Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu Yardım sayfasında, Visual Basic'in dize dönüştürmeleri ve karşılaştırmaları gerçekleştirmek için kültür bilgilerini nasıl kullandığı açıklanır.
Culture-Specific Dizeleri Ne Zaman Kullanılır?
Normalde, kullanıcılara sunulan ve kullanıcılardan okunan tüm veriler için kültüre özgü dizeler ve uygulamanızın iç verileri için kültür sabiti dizeleri kullanmanız gerekir.
Örneğin, uygulamanız kullanıcılardan dize olarak bir tarih girmesini isterse, kullanıcıların dizeleri kendi kültürlerine göre biçimlendirmesini beklemeli ve uygulamanın dizeyi uygun şekilde dönüştürmesi gerekir. Uygulamanız bu tarihi kullanıcı arabiriminde gösterirse, bunu kullanıcının kültüründe sunmalıdır.
Ancak, uygulama tarihi merkezi bir sunucuya yüklerse, farklı olabilecek tarih biçimleri arasındaki karışıklığı önlemek için dizeyi belirli bir kültüre göre biçimlendirmelidir.
Culture-Sensitive İşlevleri
Tüm Visual Basic dize dönüştürme fonksiyonları (Str ve Val fonksiyonları hariç), dönüştürmelerin ve karşılaştırmaların uygulama kullanıcısının kültürüne uygun olduğundan emin olmak için uygulamanın kültür bilgilerini kullanır.
Farklı kültür ayarlarına sahip bilgisayarlarda çalışan uygulamalarda dize dönüştürme işlevlerini başarıyla kullanmanın anahtarı, hangi işlevlerin belirli bir kültür ayarını ve hangilerinin geçerli kültür ayarını kullandığını anlamaktır. Uygulamanın kültür ayarlarının varsayılan olarak işletim sisteminin kültür ayarlarından devralındığını fark edin. Daha fazla bilgi için bkz Asc. , AscW, Chr, ChrW, Format, , Hex, Octve Tür Dönüştürme İşlevleri.
Str (sayıları dizelere dönüştürür) ve Val (dizeleri sayılara dönüştürür) işlevleri, dizeler ve sayılar arasında dönüştürme yaparken uygulamanın kültür bilgilerini kullanmaz. Bunun yerine, yalnızca dönemi (.) geçerli bir ondalık ayırıcı olarak tanır. Bu işlevlerin kültürel açıdan farkında olan analogları şunlardır:
Geçerli kültürü kullanan dönüştürmeler.
CStrveFormatişlevleri bir sayıyı dizeye,CDblveCIntişlevleri ise bir dizeyi sayıya dönüştürür.Belirli bir kültürü kullanan dönüştürmeler. Her sayı nesnesinin bir
ToString(IFormatProvider)sayıyı dizeye dönüştüren bir yöntemi ve birParse(String, IFormatProvider)dizeyi sayıya dönüştüren bir yöntemi vardır. Örneğin,Doubletürü ToString(IFormatProvider) ve Parse(String, IFormatProvider) yöntemlerini sağlar.
Daha fazla bilgi için bkz. Str ve Val.
Belirli Bir Kültürü Kullanma
Bir Web hizmetine tarih (dize olarak biçimlendirilmiş) gönderen bir uygulama geliştirdiğinizi düşünün. Bu durumda, uygulamanızın dize dönüştürme için belirli bir kültür kullanması gerekir. Bunun nedenini göstermek için, tarihin ToString() yöntemini kullanmanın sonucunu göz önünde bulundurun: Uygulamanız 4 Temmuz tarihini biçimlendirmek için bu yöntemi kullanıyorsa, 2005, Abd İngilizcesi (en-US) kültürüyle çalıştırıldığında "4/7/2005 12:00:00" sonucunu döndürür, ancak Almanca (de-DE) kültürüyle çalıştırıldığında "04.07.2005 00:00:00" değerini döndürür.
Belirli bir kültür biçiminde bir dize dönüştürmesi gerçekleştirmeniz gerektiğinde, .NET Framework'te yerleşik olan sınıfı kullanmanız CultureInfo gerekir. Belirli bir kültür için, kültürün adını CultureInfo oluşturucuya geçirerek CultureInfo yeni bir nesne oluşturabilirsiniz. Desteklenen kültür adları, sınıf Yardım sayfasında listelenir CultureInfo .
Alternatif olarak, sabit kültürün bir örneğini CultureInfo.InvariantCulture özellik aracılığıyla alabilirsiniz. Sabit kültür, İngiliz kültürünü temel alır, ancak bazı farklılıklar vardır. Örneğin sabit kültür, 12 saatlik saat yerine 24 saatlik bir saat belirtir.
Bir tarihi kültüre özgü dizeye dönüştürmek için CultureInfo nesnesini date nesnesinin ToString(IFormatProvider) yöntemine geçirin. Örneğin, uygulamanın kültür ayarlarından bağımsız olarak aşağıdaki kod "04/07/2005 00:00:00" değerini görüntüler.
Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))
Uyarı
Tarih sabit değerleri her zaman İngiliz kültürüne göre değerlendirilir.
Dizeleri Karşılaştırma
Dize karşılaştırmalarının gerekli olduğu iki önemli durum vardır:
Kullanıcıya görüntülenecek verileri sıralama. Geçerli kültüre dayalı işlemleri kullanarak dizelerin uygun şekilde sıralanmasını sağlayın.
İki uygulama iç dizesinin tam olarak eşleşip eşleşmediğini belirleme (genellikle güvenlik amacıyla). Geçerli kültürü göz ardı eden işlemleri kullanın.
Visual Basic StrComp işleviyle her iki karşılaştırma türünü de gerçekleştirebilirsiniz. Karşılaştırma türünü denetlemek için isteğe bağlı Compare bağımsız değişkeni belirtin: Text çoğu giriş ve çıkış Binary için tam eşleşmeleri belirlemek için.
İşlev, StrComp sıralama düzenine göre karşılaştırılan iki dize arasındaki ilişkiyi gösteren bir tamsayı döndürür. Sonuç için pozitif bir değer, ilk dizenin ikinci dizeden büyük olduğunu gösterir. Negatif sonuç, ilk dizenin daha küçük olduğunu, sıfır ise dizeler arasındaki eşitliği gösterir.
' 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)
işlevinin .NET Framework iş ortağı olan StrCompString.Compare yöntemini de kullanabilirsiniz. Bu, temel dize sınıfının statik, aşırı yüklenmiş bir yöntemidir. Aşağıdaki örnekte bu yöntemin nasıl kullanıldığı gösterilmektedir:
Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)
Karşılaştırmaların nasıl gerçekleştirildiğini daha ayrıntılı bir şekilde denetlemek için yöntemin Compare ek aşırı yüklemelerini kullanabilirsiniz.
String.Compare yöntemini kullanarak, hangi tür karşılaştırmayı kullanacağınızı belirtmek için comparisonType bağımsız değişkenini kullanabilirsiniz.
Bağımsız değişken değeri comparisonType |
Karşılaştırma türü | Ne zaman kullanılır? |
|---|---|---|
Ordinal |
Dizelerin bileşen baytlarına göre karşılaştırma. | Büyük/küçük harfe duyarlı tanımlayıcılar, güvenlikle ilgili ayarlar veya baytların tam olarak eşleşmesi gereken diğer dilsel olmayan tanımlayıcıları karşılaştırırken bu değeri kullanın. |
OrdinalIgnoreCase |
Dizelerin bileşen baytlarına göre karşılaştırma.OrdinalIgnoreCase iki karakterin yalnızca büyük harfe çevirmede ne zaman farklı olduğunu belirlemek için sabit kültür bilgilerini kullanır. |
Karşılaştırırken şu değeri kullanın: büyük/küçük harfe duyarlı olmayan tanımlayıcılar, güvenlikle ilgili ayarlar ve Windows'ta depolanan veriler. |
CurrentCulture veya CurrentCultureIgnoreCase |
Geçerli kültürdeki dizelerin yorumunu temel alan karşılaştırma. | Karşılaştırırken şu değerleri kullanın: kullanıcıya görüntülenen veriler, çoğu kullanıcı girişi ve dilsel yorumlama gerektiren diğer veriler. |
InvariantCulture veya InvariantCultureIgnoreCase |
Sabit kültürdeki dizelerin yorumunu temel alan karşılaştırma.Ordinal ve OrdinalIgnoreCase değerlerinden farklıdır, çünkü sabit kültür kabul edilen aralığın dışındaki karakterleri eşdeğer sabit karakterler olarak değerlendirir. |
Bu değerleri yalnızca kalıcı verileri karşılaştırırken veya sabit bir sıralama düzeni gerektiren dilsel olarak ilgili verileri görüntülerken kullanın. |
Güvenlikle İlgili Dikkat Edilmesi Gerekenler
Uygulamanız bir karşılaştırma veya büyük/küçük harf değiştirme işleminin sonucuna göre güvenlik kararları veriyorsa, bu işlem için String.Compare yöntemini kullanmalı ve Ordinal bağımsız değişkeni için OrdinalIgnoreCase veya comparisonType geçirmelidir.