.NET 字符串函数是否IndexOf("blah")
区分大小写?
据我记得他们不是,但由于某种原因,我在我的应用程序中看到了错误,其中查询字符串中的文本是驼峰式大小写(如 UserID),我正在测试IndexOf("userid")
.
.NET 字符串函数是否IndexOf("blah")
区分大小写?
据我记得他们不是,但由于某种原因,我在我的应用程序中看到了错误,其中查询字符串中的文本是驼峰式大小写(如 UserID),我正在测试IndexOf("userid")
.
是的,字符串函数默认区分大小写。它们通常具有重载,可让您指示所需的字符串比较类型。IndexOf 也是如此。要以不区分大小写的方式获取字符串的索引,您可以执行以下操作:
string blaBlah = "blaBlah";
int idx = blaBlah.IndexOf("blah", StringComparison.OrdinalIgnoreCase);
我想在现有答案中添加一件事(因为您最初询问的是 ASP.NET):
一些名称/值集合,例如 Request.QueryString 和可能还有 Request.Form 不区分大小写。例如,如果我使用以下 URL 导航到 ASPX 页面
http://server/mypage.aspx?user=admin
那么以下两行都将返回“admin”:
var user1 = Request.QueryString["user"];
var user2 = Request.QueryString["USER"];
.NET 字符串比较确实区分大小写。在比较它们之前,您可以使用 ToUpper() 之类的东西来规范化它们。
默认情况下,它们区分大小写,但包括 IndexOf 在内的大多数(如果不是全部)具有采用 StringComparison 参数的重载。例如,如果你通过
StringComparison.InvariantCultureIgnoreCase
作为 IndexOf 的 StringComparison 参数,它将(顾名思义)忽略大小写差异