我需要某种转换/映射,例如,由 CLCL 剪贴板管理器完成。
它的作用是这样的:
我复制以下 Unicode 文本:ūī
并且 CLCL 将其转换为:ui
有什么技术可以进行这种转换吗?或者也许有可以用来转换的映射表,比方说,符号 ū 映射到 u。
更新
感谢大家的帮助。这是我带来的(两种解决方案的混合体),一种由 Erik Schierboom 发布,另一种来自http://blogs.infosupport.com/normalizing-unicode-strings-in-c/#comment-8984
public static string ConvertUnicodeToAscii(string unicodeStr, bool skipNonConvertibleChars = false)
{
if (string.IsNullOrWhiteSpace(unicodeStr))
{
return unicodeStr;
}
var normalizedStr = unicodeStr.Normalize(NormalizationForm.FormD);
if (skipNonConvertibleChars)
{
return new string(normalizedStr.ToCharArray().Where(c => (int) c <= 127).ToArray());
}
return new string(
normalizedStr.Where(
c =>
{
UnicodeCategory category = CharUnicodeInfo.GetUnicodeCategory(c);
return category != UnicodeCategory.NonSpacingMark;
}).ToArray());
}