.NET字符串函數是否與IndexOf("blah")
區分大小寫?.NET字符串操作是否區分大小寫?
從我記得他們不是,但由於某種原因,我看到在我的應用程序中的查詢字符串中的文本是駝峯的情況下(如UserID)的錯誤,我正在測試IndexOf("userid")
。
.NET字符串函數是否與IndexOf("blah")
區分大小寫?.NET字符串操作是否區分大小寫?
從我記得他們不是,但由於某種原因,我看到在我的應用程序中的查詢字符串中的文本是駝峯的情況下(如UserID)的錯誤,我正在測試IndexOf("userid")
。
是的,字符串函數默認情況下區分大小寫。他們通常有一個重載,可以讓你指出你想要的字符串比較類型。 IndexOf也是如此。爲了讓您的字符串的索引,在不區分大小寫的方式,你可以這樣做:
string blaBlah = "blaBlah";
int idx = blaBlah.IndexOf("blah", StringComparison.OrdinalIgnoreCase);
.NET字符串比較確實是大小寫敏感的。你可以使用ToUpper()等東西來比較它們之前的事情。
另一種選擇是:CultureInfo.CurrentCulture.CompareInfo.IndexOf(source,value,CompareOptions.IgnoreCase) –
注意文化,或者你可能突然發現比較不適用於土耳其語系統 - 在土耳其語中,我大寫字母爲©。 –
使用ToUpper或ToLower是一個壞主意,因爲它需要初始化一個新對象(對性能不利),所有字符串比較方法要麼使用StringComparison參數,要麼在其中一個重載使用IComparer參數,使用其中一個將超出ToUpper /降低 –
默認情況下它們區分大小寫,但其中大部分(如果不是全部)包括IndexOf都有一個接受StringComparison參數的重載。例如。如果你通過
StringComparison.InvariantCultureIgnoreCase
爲StringComparison參數INDEXOF會(顧名思義)忽略大小寫的區別
一個我想添加到現有的答案(因爲你的事情原本詢問關於ASP.NET):
一些名稱/值集合,如Request.QueryString,也可能Request.Form不區分大小寫。例如,如果我使用以下URL
http://server/mypage.aspx?user=admin
瀏覽到一個ASPX頁面,然後下面的兩個行會返回「管理員」:
var user1 = Request.QueryString["user"];
var user2 = Request.QueryString["USER"];
C#是stricly大小寫敏感的,但是在VB.NET,您可以使用OPTION COMPARE TEXT來強制進行不區分大小寫的比較。 VB.NET中的默認值是BINARY,所以它的行爲就像C#一樣。 –
即使如此,'Option Compare'只適用於VB比較運算符,如'='和'Like' - 它不會影響'String'的任何方法,也不會影響任何其他FCL字符串函數。 –