Reputation: 3094
I have a string. I need to replace all instances of a given array of strings from this original string - how would I do that?
Currently I am using...
var inputString = "this is my original string.";
var replacement = "";
var pattern = string.Join("|", arrayOfStringsToRemove);
Regex.Replace(inputString, pattern, replacement);
This works fine, but unfortunately it breaks down when someone tries to remove a character that has a special meaning in the regex.
How should I do this? Is there a better way?
Upvotes: 1
Views: 3729
Reputation: 86344
Build the pattern using 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);
Upvotes: 3
Reputation: 16085
You need to escape characters with spacial meaning of course.
var str_to_replace = "removing \[this\]\(link\)";
Upvotes: 0
Reputation: 22587
You need to escape special characters with a backslash
\
Sometimes you may need to use two backslashes
\\
Upvotes: 0