如何从 C# 中的字符串中删除变音符号?
How to delete diacritics from a string in C#?
我有一个字符串 -
125DF885DF44é112846522FF001
我想从字符串中删除 é。当我在线搜索时,我得到了删除 é 和 returns e.
中的重音的解决方案
变音符号可以出现在字符串的任意位置,不固定,也可以多个
如何删除这些?
你可以用这个
string s = "125DF885DF44é112846522FF001";
string s1 = s.Replace("é","");
一般情况下,我们可以去掉unicode的符号NonSpacingMark
范围:
- 我们将每个符号变成一对:符号 + 它的标记(即变音符号)
- 我们删除标记
- 组合符号回来
代码:
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);
我有一个字符串 -
125DF885DF44é112846522FF001
我想从字符串中删除 é。当我在线搜索时,我得到了删除 é 和 returns e.
中的重音的解决方案变音符号可以出现在字符串的任意位置,不固定,也可以多个
如何删除这些?
你可以用这个
string s = "125DF885DF44é112846522FF001";
string s1 = s.Replace("é","");
一般情况下,我们可以去掉unicode的符号NonSpacingMark
范围:
- 我们将每个符号变成一对:符号 + 它的标记(即变音符号)
- 我们删除标记
- 组合符号回来
代码:
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);