ドイツ語の文字(ウムラウト、アクセント)を英語の同等の文字に置き換えます
有効なものとして受け入れられない別のシステムに処理するために、テキストのさまざまなフィールドからドイツ語固有の文字を削除する必要があります。
したがって、私が知っている文字は次のとおりです。
ßäöüÄÖÜ
現時点では、それらを手動で置き換える方法が少しあります。
myGermanString.Replace("ä","a").Replace("ö","o").Replace("ü","u").....
しかし、私はそれを行うためのより簡単でより効率的な方法があることを望んでいました。実行ごとに数千の文字列で実行するため、99%にはこれらの文字が含まれません。
たぶん、ある種のCultureInfoを含むメソッドですか?
(たとえば、MSによると、次の結果は文字列が等しいことを示します
String.Compare("Straße", "Strasse", StringComparison.CurrentCulture);
したがって、何らかの変換テーブルがすでに存在している必要がありますか?)
このプロセスは、「発音区別符号」の削除として知られています 文字列から発音区別符号(アクセント)を削除する を参照してください。これは次のコードを使用します。
public static String RemoveDiacritics(String s)
{
String normalizedString = s.Normalize(NormalizationForm.FormD);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < normalizedString.Length; i++)
{
Char c = normalizedString[i];
if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
stringBuilder.Append(c);
}
return stringBuilder.ToString();
}
Jbが言及した記事から http://weblogs.asp.net/fmarguerie/archive/2006/10/30/removing-diacritics-accents-from-strings.aspx
public static String RemoveDiacritics(String s)
{
String normalizedString = s.Normalize(NormalizationForm.FormD);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < normalizedString.Length; i++)
{
Char c = normalizedString[i];
if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
stringBuilder.Append(c);
}
return stringBuilder.ToString();
}