Действительно ли строковые операции.NET чувствительны к регистру?

Согласно http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshalasattribute.aspx :

[return: MarshalAs()]
public ISomething Foo()
{
    return new MyFoo();
}

11
задан Greg 1 September 2009 в 21:20
поделиться

4 ответа

Да, строковые функции по умолчанию чувствительны к регистру. Обычно у них есть перегрузка, позволяющая указать тип сравнения строк, который вам нужен. Это также верно для IndexOf. Чтобы получить индекс вашей строки без учета регистра, вы можете сделать:

string blaBlah = "blaBlah";
int idx = blaBlah.IndexOf("blah", StringComparison.OrdinalIgnoreCase);
21
ответ дан 3 December 2019 в 02:20
поделиться

Сравнение строк .NET действительно чувствительно к регистру. Вы можете использовать такие вещи, как ToUpper (), чтобы нормализовать вещи перед их сравнением.

1
ответ дан 3 December 2019 в 02:20
поделиться

Одна вещь, которую я хотел бы добавить к существующим ответам (поскольку вы первоначально спрашивали об ASP.NET):

Некоторые коллекции имен / значений, такие как поскольку Request.QueryString и, вероятно, также Request.Form не чувствительны к регистру. Например, если я перейду на страницу ASPX по следующему URL-адресу

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

, то обе следующие строки вернут «admin»:

var user1 = Request.QueryString["user"];
var user2 = Request.QueryString["USER"];
11
ответ дан 3 December 2019 в 02:20
поделиться

По умолчанию они чувствительны к регистру, но большинство из них (если не все), включая IndexOf, имеют перегрузку, которая принимает аргумент StringComparison. Например, если вы передадите

StringComparison.InvariantCultureIgnoreCase 

в качестве аргумента StringComparison в IndexOf, он (как следует из названия) проигнорирует различия в регистре

0
ответ дан 3 December 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: