我在 stackoverflow 上找到了如何删除变音符号的答案,但是您能否告诉我是否可以将变音符号更改为非变音符号?
哦..我想到了.NET(或者其他,如果不可能的话)
由于没有人费心发布代码来执行此操作,因此它是:
// \p{Mn} or \p{Non_Spacing_Mark}:
// a character intended to be combined with another
// character without taking up extra space
// (e.g. accents, umlauts, etc.).
private readonly static Regex nonSpacingMarkRegex =
new Regex(@"\p{Mn}", RegexOptions.Compiled);
public static string RemoveDiacritics(string text)
{
if (text == null)
return string.Empty;
var normalizedText =
text.Normalize(NormalizationForm.FormD);
return nonSpacingMarkRegex.Replace(normalizedText, string.Empty);
}
注意:需要这样做的一个重要原因是当您集成到仅执行 ascii 的第三方系统时,但您的数据采用 unicode 格式。这很常见。您的选择基本上是:删除重音字符,或尝试从重音字符中删除重音,以尝试尽可能多地保留原始输入。显然,这不是一个完美的解决方案,但它比简单地删除 ASCII 127 以上的任何字符要好 80%。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)