2017-11-25 145 views
4

我有下面的代码示例:删除口音

var inputString = "ñaáme"; 
inputString = inputString.Replace('ñ', '\u00F1'); 
var normalizedString = inputString.Normalize(NormalizationForm.FormD); 
var result = Regex.Replace(normalizedString, @"[^ñÑa-zA-Z0-9\s]*", string.Empty); 
return result.Replace('\u00F1', 'ñ'); // naame :(

我需要正常化文本而不删除“ñ” S

I followed this example 但它是针对Java和它有没有为我工作

我希望你的结果是:“ñaame”。

回答

5

您可以将以及ASCII码字母(不需要标准化)的任何Unicode字母与(?i)[\p{L}-[ña-z]]+正则表达式匹配并对其进行规格化。然后,也从字符串中删除任何组合标记。

使用

​​

C# demo

模式描述

  • (?i) - 忽略大小写修改
  • [ - 开始一个字符类的
    • \p{L} - 任何Unicode信
    • -[ - 比
      • ña-z其他 - ñ和ASCII字母
    • ] - 减法类的端
  • ]+ - 1或出现次数更多。
+0

您的回答非常好。我工作他的代码。 非常感谢。 – HenryGuillen17

+0

当然,我从来不会以这种方式来解决问题,而且我看到了一些正则表达式。 再一次,非常感谢。 – HenryGuillen17