Je voudrais écrire une expression régulière qui supprimerait les caractères spéciaux sur la base suivante:
@
, &
, '
, (
, )
, <
, >
ou #
J'ai écrit cette expression régulière qui supprime les espaces blancs avec succès:
string username = Regex.Replace(_username, @"\s+", "");
Mais je voudrais le mettre à niveau/le changer pour qu'il puisse supprimer les caractères ci-dessus que j'ai mentionnés.
Est-ce que quelqu'un peut m'aider avec ça?
string username = Regex.Replace(_username, @"(\s+|@|&|'|\(|\)|<|>|#)", "");
utiliser un jeu de caractères [charsgohere]
string removableChars = Regex.Escape(@"@&'()<>#");
string pattern = "[" + removableChars + "]";
string username = Regex.Replace(username, pattern, "");
Je suggère d'utiliser Linq au lieu de expressions régulières:
string source = ...
string result = string.Concat(source
.Where(c => !char.IsWhiteSpace(c) &&
c != '(' && c != ')' ...));
Si vous avez plusieurs caractères à ignorer, vous pouvez les organiser en une collection:
HashSet<char> skip = new HashSet<char>() {
'(', ')', ...
};
...
string result = string.Concat(source
.Where(c => !char.IsWhiteSpace(c) && !skip.Contains(c)));
Vous pouvez facilement utiliser la fonction Remplacer du Regex:
string a = "ash&#<>fg fd";
a= Regex.Replace(a, "[@&'(\\s)<>#]","");