2017-11-25 123 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