如何从 C# 中的字符串中删除变音符号?

How to delete diacritics from a string in C#?

我有一个字符串 -

125DF885DF44é112846522FF001

我想从字符串中删除 é。当我在线搜索时,我得到了删除 é 和 returns e.

中的重音的解决方案

变音符号可以出现在字符串的任意位置,不固定,也可以多个

如何删除这些?

你可以用这个

string s = "125DF885DF44é112846522FF001";
string s1 = s.Replace("é","");

一般情况下,我们可以去掉unicode的符号NonSpacingMark范围:

  1. 我们将每个符号变成一对:符号 + 它的标记(即变音符号)
  2. 我们删除标记
  3. 组合符号回来

代码:

using System.Linq;

...

string source = "125DF885DF44é112846522FF001";

string result = string.Concat(source
    .Normalize(NormalizationForm.FormD)
    .Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != 
                UnicodeCategory.NonSpacingMark))
  .Normalize(NormalizationForm.FormC);