Umlaute 的文化感知字符串比较

Culture-aware string comparison for Umlaute

我需要比较两个德语字符串以检查它们是否相等并且仅在元音变音的使用上有所不同。例如。 "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);

(或者这两个是否相等?)

但是,这不起作用并且会 return 1。所有元音变音符 ö、ü 和 ä 都相同。如果我以相同的方式比较 strassestraße,这确实有效并且 returns 0?!

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

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

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