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

此函数将返回 false,因为它尝试检查变音符号“rểplay”而不是“replay”。如何忽略非间距组合字符,例如变音符号并返回 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 回答