2008-12-11 12 views
1

J'ai une chaîne. J'ai besoin de remplacer toutes les instances d'un tableau donné de chaînes de cette chaîne d'origine - comment ferais-je cela?Supprimer les caractères en utilisant Regex

Actuellement, je suis en utilisant ...

var inputString = "this is my original string."; 
var replacement = ""; 
var pattern = string.Join("|", arrayOfStringsToRemove); 

Regex.Replace(inputString, pattern, replacement); 

Cela fonctionne très bien, mais malheureusement, il tombe en panne quand quelqu'un essaie d'enlever un personnage qui a une signification particulière dans le regex.

Comment est-ce que je devrais faire ceci? Y a-t-il un meilleur moyen?

Répondre

3

Construire le modèle en utilisant Regex.Escape:

StringBuilder pattern = new StringBuilder(); 
foreach (string s in arrayOfStringsToRemove) 
{ 
    pattern.Append("("); 
    pattern.Append(Regex.Escape(s)); 
    pattern.Append(")|"); 
} 
Regex.Replace(inputString, pattern.ToString(0, pattern.Length - 1), // remove trailing | 
    replacement); 
0

Vous devez échapper les caractères spéciaux avec une barre oblique inverse

\ 

Parfois, vous devrez peut-être utiliser deux barres obliques

\\ 
0

Vous devez échapper les caractères avec sens spacial bien sûr.

var str_to_replace = "removing \[this\]\(link\)"; 
Questions connexes