如何用C#中的等效字符替换特殊字符(例如"á"代替"a")?

jeh*_*uty 11 c# string unicode encoding character

我需要从Excel文件中获取葡萄牙语文本内容并创建一个xml,它将由不支持"ç","á","é"等字符的应用程序使用.而且我不能只删除字符,而是用等效字符替换它们(例如"c","a","e").

我认为有一个更好的方法来做,而不是单独检查每个角色,并将其替换为对应的角色.有关如何做的任何建议?

Ben*_*ngs 23

你可以试试像

var decomposed = "áéö".Normalize(NormalizationForm.FormD);
var filtered = decomposed.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark);
var newString = new String(filtered.ToArray());
Run Code Online (Sandbox Code Playgroud)

这会分解文本中的重音,过滤它们并创建一个新字符串.组合变音符号在非间距标记 unicode类别中.