How match string ignoring case and accent?

时间:2019-04-08 13:25:35

标签: c# regex

Im using Regex to match string ignoring case in Unity.

My code:

...
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)){
//
}
...

According this:

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

Is there a code to match previous string ignoring case and accent?

2 个答案:

答案 0 :(得分:1)

Try using 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!");
}

答案 1 :(得分:0)

If you want to match this specific sentence you could use something like this:

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

but if just want to "ignore" accents i would recommend you use 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)){
//
}