我想编写一个可以在以下基础上删除特殊字符的正则表达式:
@
,&
,'
,(
,)
,<
,>
或#
我写了这个正则表达式,成功删除了空格:
string username = Regex.Replace(_username, @"\s+", "");
但我想升级/更改它,以便它可以删除上面提到的字符。
有人可以帮我解决这个问题吗?
答案 0 :(得分:20)
string username = Regex.Replace(_username, @"(\s+|@|&|'|\(|\)|<|>|#)", "");
答案 1 :(得分:8)
使用字符集[charsgohere]
string removableChars = Regex.Escape(@"@&'()<>#");
string pattern = "[" + removableChars + "]";
string username = Regex.Replace(username, pattern, "");
答案 2 :(得分:4)
我建议使用 Linq 而不是正则表达式:
string source = ...
string result = string.Concat(source
.Where(c => !char.IsWhiteSpace(c) &&
c != '(' && c != ')' ...));
如果您要跳过多个字符,可以将它们整理到一个集合中:
HashSet<char> skip = new HashSet<char>() {
'(', ')', ...
};
...
string result = string.Concat(source
.Where(c => !char.IsWhiteSpace(c) && !skip.Contains(c)));
答案 3 :(得分:4)
您可以轻松使用Regex的替换功能:
string a = "ash&#<>fg fd";
a= Regex.Replace(a, "[@&'(\\s)<>#]","");
答案 4 :(得分:0)
导入重新 string1 = "12@34#adf$c5,6,7,ok" output = re.sub(r'[^a-zA-Z0-9]','',string1) >>>> ^ 将用于除了括号中的提及(或用空格替换特殊字符)将替换为空格然后以字符串形式返回
结果 = 1234adfc567ok