I was wondering if there is any way that I can replace substrings within a string but alternate between the string to replace them with. I.E, match all occurences of the string "**" and replace the first occurence with "<strong>" and the next occurence with "</strong>" (And then repeat that pattern).
The input would be something like this: "This is a sentence with **multiple** strong tags which will be **strong** upon output"
And the output returned would be: "This is a sentence with <strong>multiple</strong> strong tags which will be <strong>strong</strong> upon output"
You can use the overload of Regex.Replace that takes a MatchEvaluator delegate:
using System.Text.RegularExpressions;
class Program {
static void Main(string[] args) {
string toReplace = "This is a sentence with **multiple** strong tags which will be **strong** upon output";
int index = 0;
string replaced = Regex.Replace(toReplace, @"\*\*", (m) => {
index++;
if (index % 2 == 1) {
return "<strong>";
} else {
return "</strong>";
}
});
}
}
The easiest way to do that would be to actually regex for **(content)** rather than just **. You then replace that by <strong>(content)</strong> and you're done.
You may also want to check out MarkdownSharp at https://code.google.com/p/markdownsharp, since that is really what you seem to want to use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With