Are .NET string operations case sensitive?

被刻印的时光 ゝ 提交于 2019-12-21 08:23:07

问题


Are .NET string functions like IndexOf("blah") case sensitive?

From what I remember they aren't, but for some reason I am seeing bugs in my app where the text in the query string is in camel case (like UserID) and I'm testing for IndexOf("userid").


回答1:


Yes, string functions are case sensitive by default. They typically have an overload that lets you indicate the kind of string comparison you want. This is also true for IndexOf. To get the index of your string, in a case-insensitive way, you can do:

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



回答2:


One thing I'd like to add to the existing answers (since you were originally asking about ASP.NET):

Some name/value collections, such as the Request.QueryString and probably also Request.Form are not case-sensitive. For example if I navigate to an ASPX page using the following URL

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

then both of the following lines will return "admin":

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



回答3:


.NET string comparisons are indeed case sensitive. You could use things like ToUpper() to normalize things before comparing them.




回答4:


As default they are case sensitive but most of them (if not all) including IndexOf has an overload that takes a StringComparison argument. E.g. if you pass

StringComparison.InvariantCultureIgnoreCase 

as the StringComparison argument to IndexOf it will (as the name implies) ignore case differences



来源:https://stackoverflow.com/questions/1364442/are-net-string-operations-case-sensitive

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!