可能重复:
如何将 Unicode 字符转换为其等效的 ASCII 字符
如何从 .NET 中的字符串中删除变音符号(重音符号)?
我需要使搜索表单对包含宏、元音变音等的文本不敏感。
例如,“ŌōṒṓṐṑşş”应被视为等于“oooooooo”。
在 TSQL 中我可以让它部分工作:
select Cast('ŌōṒṓṐṑȪȫ' as varchar)
返回
Oo??????
。它足够聪明,可以将前两个字符翻译为“O”和“o”。
我试图使用此 C# 代码来“展平”文本,但它根本不起作用。结果是“??????”。
var text = "ŌōṒṓṐṑȪȫ";
var buffer = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, Encoding.Unicode.GetBytes(text));
var result = Encoding.ASCII.GetString(buffer);
有没有办法在.NET 中做到这一点?我知道我可以创建一个映射,将“ŌōṒṓṐṑşş”等字符链接到“o”等其他字符,但我希望已经有一种内置方法可以做到这一点。
String 类有一组重载的 Normalize() 方法。
你不需要做标准化,这很耗时,而且有更好的东西。
大多数字符串比较操作都有一个需要 CompareOptions 的风格。 您可以将其用于比较选项:
static_cast<CompareOptions>(CompareOptions::IgnoreCase | CompareOptions::IgnoreNonSpace)
请参阅 CompareInfo 类 http://msdn.microsoft.com/en-us/library/2z428sw8.aspx