0
string[] myArray= { "replay", "answer" };
if (myArray.Contains("rểplay")) {
//...
}

この関数は、"replay" ではなく "rểplay" という分音記号をチェックしようとするため、false を返します。分音符号などの非間隔結合文字を無視して true を返すにはどうすればよいですか?

また、以下のように逆にどのように機能しますか?

string[] myArray= { "rểplay", "answer" };
if (myArray.Contains("replay")) {
//...
}

また、この機能にどのように適用するのですか?

var ix = Array.FindIndex(myKeys, p => p.Equals(wordIn, StringComparison.CurrentCultureIgnoreCase));
wordOut = myKeys[ix];
return true;
4

1 に答える 1

2

検索文字列を正規化し、配列を検索したいと思います。

using System.Globalization;

string input = "rểplay";
string decomposed = input.Normalize(NormalizationForm.FormD);
char[] filtered = decomposed
    .Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
    .ToArray();
string newString = new String(filtered);

string[] myArray= { "replay", "answer" };
if (myArray.Contains(newString)) {
//...
}
于 2012-07-20T07:04:34.503 に答える