Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Александр Петросян (PAF) 27.05.2005 13:27
посмотрел SSCLI исходники,// \sscli\clr\src\classlibnative\nls\sortingtable.cpp int NativeCompareInfo::IndexOfString(...там какой-то редкостный по глубине бред с диакритическими весами и прочим на ~500 строк.
// \sscli\clr\src\classlibnative\nls\sortingtablefile.h //This is the list of English locales which we currently understand. //We should only do fast comparisons in one of these locales. #define IS_FAST_COMPARE_LOCALE(loc) (((loc)==0x0409) /*USA*/ || ((loc)==0x0809) /*UK*/ ||\ ((loc)==0x0C09) /*AUS*/ || ((loc)==0x1009) /*CANADA*/ ||\ ((loc)==0x2809) /*Belize*/ || ((loc)==0x2409) /*Caribean*/ ||\ ((loc)==0x1809) /*Ireland*/ || ((loc)==0x2009) /*Jamaica*/ ||\ ((loc)==0x1409) /*NZ*/ || ((loc)==0x3409) /*Philippines*/ ||\ ((loc)==0x2C09) /*Trinidad*/|| ((loc)==0x1c09) /*South Africa*/ ||\ ((loc)==0x3009) /*Zimbabwe*/)можно попробовать так:
CultureInfo.CurrentCulture.CompareInfo.IndexOf(where, "what", CompareOptions.Ordinal);
OrdinalParser3, понятное дело, в диакритических знаках не силён, и в нём работает всё существенно проще.
Indicates that the string comparison must be done using the Unicode values of each character, which is a fast comparison but is culture-insensitive.