1

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?

4 Answers 4

3

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);
Sign up to request clarification or add additional context in comments.

Comments

1

Look at Regex.Escape

Comments

0

You need to escape special characters with a backslash

\

Sometimes you may need to use two backslashes

\\

Comments

0

You need to escape characters with spacial meaning of course.

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.