我试图取出一个字符串中的所有标点符号和空格,我将使用Playfair Cipher加密。我无法弄清楚为什么这条线不起作用。
s = Regex.Replace(s, @"[^\w\s]", string.Empty);
答案 0 :(得分:8)
[^\w\s]
表示删除任何不是单词或空白字符的内容。
请改为尝试:
s = Regex.Replace(s, @"[^\w]", string.Empty);
你也可以使用:
s = Regex.Replace(s, @"\W", string.Empty);
当然,这会留下下划线,因为它们被认为是单词字符。要删除它们,请尝试以下方法:
s = Regex.Replace(s, @"[\W_]", string.Empty);
或者这个:
s = Regex.Replace(s, @"\W|_", string.Empty);
答案 1 :(得分:2)
如何使用Linq而不是Regex?
string str = "abc; .d";
var newstr = String.Join("", str.Where(char.IsLetterOrDigit));
答案 2 :(得分:1)
^
字符表示不是。我使用[^A-Za-z0-9-]
代替所有非字母数字的连字符。
答案 3 :(得分:0)
您最好的选择可能是使用[^A-Za-z]
,因为\w
包含_
和0-9
,我猜您不想保留。{/ p>
以下正则表达式会删除a-z
或A-Z
之外的所有内容。
s = Regex.Replace(s, @"[^A-Za-z]", string.Empty);