web-dev-qa-db-ja.com

文字列から特定の特殊文字のみを削除するための正規表現

次の基準で特殊文字を削除する正規表現を作成したいと思います。

  • 空白文字を削除するには
  • @&'()<>または#

空白を正常に削除する次の正規表現を作成しました。

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

ただし、上記の文字を削除できるように、アップグレード/変更したいと思います。

誰かがこれを手伝ってくれますか?

6
User987
 string username = Regex.Replace(_username, @"(\s+|@|&|'|\(|\)|<|>|#)", "");
20
Mithilesh Gupta

文字セット[charsgohere]を使用します

string removableChars = Regex.Escape(@"@&'()<>#");
string pattern = "[" + removableChars + "]";

string username = Regex.Replace(username, pattern, "");
8

正規表現の代わりにLinqを使用することをお勧めします。

 string source = ...

 string result = string.Concat(source
   .Where(c => !char.IsWhiteSpace(c) && 
                c != '(' && c != ')' ...));

スキップするmany文字がある場合は、コレクションに整理できます。

 HashSet<char> skip = new HashSet<char>() {
   '(', ')', ... 
 };

 ... 

 string result = string.Concat(source
   .Where(c => !char.IsWhiteSpace(c) && !skip.Contains(c)));
4
Dmitry Bychenko

RegexのReplace関数を簡単に使用できます。

string a = "ash&#<>fg  fd";
a= Regex.Replace(a, "[@&'(\\s)<>#]","");