问题
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