Umlaute

时间:2015-04-24 10:33:59

标签: c# .net-4.5 string-comparison

我需要用德语比较两个字符串,以检查它们是否相等,只是在使用变音符号方面有所不同。例如。 “Jörg”应与“Joerg”相同。

所以我试过了:

var ci = new CultureInfo("de-DE");
int compareResult = ci.CompareInfo.Compare("jörg", "joerg", CompareOptions.IgnoreNonSpace);

以及

int compareResult = String.Compare("jörg", "joerg", true, ci);

(或者两者是否相等?)

但是,这不起作用,将返回1。所有的变形金刚ö,ü和ä都是一样的。如果我以相同的方式比较strassestraße,这确实有效,并返回0 ?!

感谢您的任何想法!这post表明我应该工作。

1 个答案:

答案 0 :(得分:3)

我有同样的问题,没有找到其他解决方案,然后更换它们,例如通过扩展。据我所知,没有"直接"解决方案。

public static string ReplaceUmlaute(this string s) 
{
    return s.Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("Ä", "AE").Replace("Ö", "OE").Replace("Ü", "UE");
}

结果:

int compareResult = String.Compare("jörg".ReplaceUmlaute(), "joerg", true, ci); // 0