ほとんどの状況でトリックを実行するコード(Michael S. Kaplan によって作成され、かなりの数の投稿で参照されています) があります。
static string RemoveDiacritics(string stIn)
{
string stFormD = stIn.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
for (int ich = 0; ich < stFormD.Length; ich++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
if (uc != UnicodeCategory.NonSpacingMark)
{
sb.Append(stFormD[ich]);
}
}
return (sb.ToString().Normalize(NormalizationForm.FormC));
}
Ç/C とアクセント付き/なしの文字でテストし、問題なく動作します (アポストロフィがあっても)。いずれにせよ、辞書ベースのアプローチまたは一連の条件/スイッチ...ケースを使用してこれを補完し、考えられるすべての不測の事態を説明する必要がある場合があります。例えば:
if (inputString.Contains("ß"))
{
inputString = inputString.Replace("ß", "ss");
}