Я думаю, что регулярное выражение будет довольно хрупким для такого рода вещей.Если ваша версия .NET имеет методы расширения, и вам нужен более чистый синтаксис, который масштабируется, вы можете ввести метод расширения, подобный следующему:
public static class StringExtensions
{
public static string ReplaceMany(this string s, Dictionary<string, string> replacements)
{
var sb = new StringBuilder(s);
foreach (var replacement in replacements)
{
sb = sb.Replace(replacement.Key, replacement.Value);
}
return sb.ToString();
}
}
Так что теперь вы создаете свой словарь замен ...
var replacements = new Dictionary<string, string> { {"(", "-"}, {")", ""} };
И позвоните ReplaceMany:
var result = "foobar(baz2)".ReplaceMany(replacements); // result = foobar-baz2
Если вы действительно хотите показать свое намерение, вы можете использовать псевдоним от Dictionary<string,string>
до StringReplacements
:
//At the top
using StringReplacements = System.Collections.Generic.Dictionary<string,string>;
//In your function
var replacements = new StringReplacements() { {"(", "-"}, {")", ""} };
var result = "foobar(baz2)".ReplaceMany(replacements);
Mightбудьте излишни только для двух замен, но если у вас есть много, чтобы сделать это будет чище, чем .Replace().Replace().Replace().Replace()...
.