我需要用德语比较两个字符串,以检查它们是否相等,只是在使用变音符号方面有所不同。例如。 “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
。所有的变形金刚ö,ü和ä都是一样的。如果我以相同的方式比较strasse
和straße
,这确实有效,并返回0
?!
感谢您的任何想法!这post表明我应该工作。
答案 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