Myślę, że regex będzie trochę kruchy dla tego rodzaju rzeczy. Jeśli wersja .NET ma metody rozszerzenie i chcesz czystsze składni, która skaluje można wprowadzić metodę rozszerzenia takiego:
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();
}
}
Więc teraz budować swoją słownika zamienniki ...
var replacements = new Dictionary<string, string> { {"(", "-"}, {")", ""} };
I zadzwonić ReplaceMany:
var result = "foobar(baz2)".ReplaceMany(replacements); // result = foobar-baz2
Jeśli naprawdę chcesz, aby pokazać swoje intencje można aliasu Dictionary<string,string>
do 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);
Może być przesadą tylko dwa zamienniki, ale jeśli masz wiele, aby go będzie czystsze niż .Replace().Replace().Replace().Replace()...
.
Wszystko - bardzo dziękuję - bardzo szczęśliwy, moje początkowe instynkty były poprawne. – rsturim