我有以下示例代码:
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 :(
我需要规范化文本而不删除“ñ”
我遵循了这个示例,但这是针对Java的,对我而言没有用
我希望您的结果是:“ñaame”。
您可以将除您的特定字母ñ
和ASCII字母(不需要标准化)以外的任何Unicode字母与(?i)[\p{L}-[ña-z]]+
regex匹配并将其标准化。然后,还要从字符串中删除所有组合标记。
使用
var inputString = "ñaáme";
var result = string.Concat(Regex.Replace(inputString, @"(?i)[\p{L}-[ña-z]]+", m =>
m.Value.Normalize(NormalizationForm.FormD)
)
.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark));
Console.Write(result);
参见C#演示
模式说明
(?i)
-忽略大小写修饰符[
-角色课程开始
\p{L}
-任何Unicode字母-[
- 以外
ña-z
-ñ
和ASCII字母]
-减法课程结束]+
-1次以上。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句