Muszę wielokrotnie zmieniać string i teraz mam taki kod:

 
string str = "........";
Regex exp;

exp = new Regex(@"\[b\](.+?)\[/b\]");
str = exp.Replace(str, "<strong>$1</strong>");

exp = new Regex(@"\[i\](.+?)\[/i\]");
str = exp.Replace(str, "<em>$1</em>");

exp = new Regex(@"\[u\](.+?)\[/u\]");
str = exp.Replace(str, "<u>$1</u>");

............

Jednak może wydajniejszym sposobem zamiast ciągłego nadpisywania zmiennej str byłoby stworzenie dwóch StringBuilderów: text i text2, wyczyszczenie text2, zastosowanie do text wyrażenia regularnego, dodanie zawartości text do text2, wyczyszczenie text, dodanie do text zawartości text2 - bo prostszego sposobu chyba nie ma?:

 
StringBuilder text = new StringBuilder();
            StringBuilder text2 = new StringBuilder();
            text.Append(".....");
            
            Regex exp;

            exp = new Regex(@"\[b\](.+?)\[/b\]");
            text2.Clear();
            text2.Append(exp.Replace(text.ToString(), "<strong>$1</strong>"));
            text.Clear();
            text.Append(text2);

            exp = new Regex(@"\[i\](.+?)\[/i\]");
            text2.Clear();
            text2.Append(exp.Replace(text.ToString(), "<em>$1</em>"));
            text.Clear();
            text.Append(text2);

..............

Który z tych sposobów jest lepszy, a może jeszcze jakiś inny sposób byłby lepszy?