Сопоставление подстроки с помощью InvariantCultureIgnoreCaseC#

Место общения программистов C#
Ответить
Anonymous
 Сопоставление подстроки с помощью InvariantCultureIgnoreCase

Сообщение Anonymous »

Я пытаюсь найти совпадение подстроки с InvariantCultureIgnoreCase.
Например, поиск «abc» в «123AbC123» должен вернуть «AbC».< /p>
Для этого я попытался использовать Regex:

Код: Выделить всё

static string IgnoreCaseMatch(string substring, string str)
{
var match = Regex.Match(str, Regex.Escape(substring), RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
if (match.Success)
{
return match.Groups[0].Value;
}

return null;
}
Но когда я пробую некоторые сложные примеры, такие как IgnoreCaseMatch("ff", "FF"), я получаю null вместо FF, while string.Equals("ff", "FF", StringComparison.InvariantCultureIgnoreCase) возвращает true.
Это означает, что сравнение строк с InvariantCultureIgnoreCase знает, что ff на самом деле является FF в другом случае, но RegexOptions.CultureInvariant | RegexOptions.IgnoreCase не находит совпадения.
Итак, как мне реализовать механизм сопоставления подстрок с помощью InvariantCultureIgnoreCase?
Судя по полученным мной комментариям, обратите внимание, что ff и FF — это специальный регистр согласно официальным спецификациям Unicode

Подробнее здесь: https://stackoverflow.com/questions/790 ... ignorecase
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»