正则表达式只从字符串

时间:2017-02-04 20:15:51

标签: c# asp.net regex c#-4.0 special-characters

我想编写一个可以在以下基础上删除特殊字符的正则表达式:

  • 删除空格字符
  • @&'()<>#

我写了这个正则表达式,成功删除了空格:

 string username = Regex.Replace(_username, @"\s+", "");

但我想升级/更改它,以便它可以删除上面提到的字符。

有人可以帮我解决这个问题吗?

5 个答案:

答案 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