return Regex.Replace(source, "[^a-zA-Z0-9% @$\"!#%&'()*+,./:;<>=?-]", string.Empty);
如何允许ČĆŽPŠĐ等字符或带变音符号的德语字符......
答案 0 :(得分:2)
您可以使用显示的here字符类。
代码的简化版:new Regex("[^\\p{L}0-9 ]").Replace("this is a test ČĆŽPŠĐ ä 244 $%^&*", String.Empty);
此收益率:this is a test ČĆŽPŠĐ ä 244
。
\\p{L}
表示用不同语言标记字母的字符集。
答案 1 :(得分:2)
试试这个:
Regex.Replace(source, "[^a-zA-Z0-9% @$\"!#%&'()*+,./:;<>=?\u0100-\u01FF-]", string.Empty);
德语是:U+0100
- &gt; U+01FF
答案 2 :(得分:1)
'Č','Ć','Ž','Š'和'Đ'都是Unicode类别'Letter,Uppercase'的一部分。您可以使用\p{..}
来匹配特定Unicode类别中的字符,其中..
是(短)类别名称。
例如,\p{Lu}
匹配“Letter,Uppercase”类别中的所有字符,\p{Ll}
匹配“Letter,Lowercase”类别中的所有字符。
所以只需将a-z
替换为\p{Ll}
,将A-Z
替换为\p{Lu}
(只需确保转义\
,或使用逐字字符串文字表达)。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx#CategoryOrBlock;有关所有受支持的类别,请参阅http://msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx#SupportedUnicodeGeneralCategories。