2009-09-01 9 views

cevap

21

Evet, dize işlevleri varsayılan olarak büyük/küçük harfe duyarlıdır. Tipik olarak, istediğiniz dize karşılaştırması türünü belirtmenize izin veren bir aşırı yüklenme vardır. Bu IndexOf için de geçerlidir. Bir harf duyarsız bir şekilde dize endeksi elde etmek için, bunu yapabilirsiniz:

string blaBlah = "blaBlah"; 
int idx = blaBlah.IndexOf("blah", StringComparison.OrdinalIgnoreCase); 
+1

C# stricly harfe duyarlıdır, ancak vb.NET'te, Vaka duyarlı olmayan bir karşılaştırmayı zorlamak için OPTION COMPARE TEXT'i kullanabilirsiniz. VB.NET'teki varsayılan, BINARY olduğundan C# gibi davranır. –

+1

Yine de, 'Seçenek Karşılaştırma' sadece '' '' '' '' '' 'gibi VB karşılaştırma operatörleri için geçerlidir -' String' ya da diğer herhangi bir FCL string fonksiyonunu etkilemez. –

1

NET dize karşılaştırmaları gerçekten küçük harf duyarlıdır. ToUpper() gibi şeyleri, bunları karşılaştırmadan önce normalleştirmek için kullanabilirsiniz.

+0

Bir başka seçenek şöyle olurdu: CultureInfo.CurrentCulture.CompareInfo.IndexOf (kaynak, değer, CompareOptions.IgnoreCase) –

+0

Kültürler hakkında dikkatli olun, ya da bir Türk sistemi üzerinde çalışmayla ilgili karşılaştırma yapmayı aniden bulabilirsiniz - Türkçe, i. ToUpper veya ToLower'ı kullanan –

+3

, yeni bir nesnenin başlatılmasını gerektireceği için kötü bir fikirdir (performans için kötü), tüm dize karşılaştırma yöntemleri, bir StringComparison bağımsız değişkenini veya bir aşırı yüklenmelerden birinde bir IComparer bağımsız değişkenini alır. /Daha düşük –

0

Varsayılan olarak büyük/küçük harfe duyarlıdırlar ancak IndexOf dahil olmak üzere çoğunun (tümü olmasa da) StringComparison bağımsız değişkenini kullanan bir aşırı yüklenme vardır. Örneğin. Eğer StringComparison argüman olarak

StringComparison.InvariantCultureIgnoreCase 

geçirirseniz (adından da anlaşılacağı gibi) harf farklılıkları dikkate olacak IndexOf'un

11

biri sana beri (mevcut cevaplara eklemek istediğiniz bir şey aslen ASP.NET hakkında sorular:

Request.QueryString ve büyük olasılıkla Request.Form gibi bazı isim/değer koleksiyonları büyük/küçük harfe duyarlı değildir. Örneğin aşağıdaki satırları hem "admin" dönecektir sonra aşağıdaki URL'yi

http://server/mypage.aspx?user=admin 

kullanarak bir ASPX sayfasına gitmek durumunda:

var user1 = Request.QueryString["user"]; 
var user2 = Request.QueryString["USER"];