Как сопоставить строку, игнорируя регистр и акцент? - PullRequest
1 голос
/ 08 апреля 2019

Я использую Regex для сопоставления строк, игнорируя регистр в Unity.

Мой код:

...
string _word = "Esto Es Una Cadena Con Texto"
string final = "esto es una cadena con texto"

if(Regex.IsMatch(final, Regex.Escape(_word), RegexOptions.IgnoreCase)){
//
}
...

В соответствии с этим:

string _word = "Estó Es Uná Cadená Cón Textó"
string final = "esto es una cadena con texto"

Есть ли код для сопоставленияпредыдущая строка игнорирует регистр и акцент?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Попробуйте использовать CultureInfo:

string _word = "Estó Es Uná Cadená Cón Textó";
string final = "esto es una cadena con texto";
var compareInfo = CultureInfo.InvariantCulture.CompareInfo;
var equal = Convert.ToBoolean(compareInfo.Compare(_word, final));

if (equal)
{
    Console.WriteLine("Hello World!");
}
0 голосов
/ 08 апреля 2019

Если вы хотите соответствовать этому конкретному предложению, вы можете использовать что-то вроде этого:

string final = "est[oó] es un[aá] caden[aá] c[oó]n text[oó]"

но если вы просто хотите "игнорировать" акценты, я бы порекомендовал вам использовать String.replace (char, char)

string _word = "Estó Es Uná Cadená Cón Textó"
string final = "esto es una cadena con texto"

_word = _word.replace('é', 'e');  // same for á and ó

if(Regex.IsMatch(final, Regex.Escape(_word), RegexOptions.IgnoreCase)){
//
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...