Mam ciąg znaków, na którym muszę wykonać niektóre zamienniki. Mam Dictionary<string, string>
, gdzie mam zdefiniowane pary wyszukiwania-zamiany. Stworzyłem następujące metody rozszerzenia do wykonania tej operacji:C# String zamień na słownik
public static string Replace(this string str, Dictionary<string, string> dict)
{
StringBuilder sb = new StringBuilder(str);
return sb.Replace(dict).ToString();
}
public static StringBuild Replace(this StringBuilder sb,
Dictionary<string, string> dict)
{
foreach (KeyValuePair<string, string> replacement in dict)
{
sb.Replace(replacement.Key, replacement.Value);
}
return sb;
}
Czy jest lepszy sposób to zrobić?
Wielkiej odpowiedź. Myślę, że twoja propozycja będzie w rzeczywistości lepsza niż iteracja w całym słowniku, ponieważ regex zastąpi jedynie tokeny, które zostały znalezione. Nie sprawdzi każdego, kto może być w środku.Więc jeśli mam duży słownik i niewielką liczbę tokenów w ciągu wejściowym, które faktycznie mogą zwiększyć moją aplikację. – RaYell
Bardzo przydatne. Przefiltrowałem to jako metodę rozszerzenia dla Regex, której nie mogę pokazać w komentarzu, więc dodam jako nieco zbędną dodatkową odpowiedź poniżej. –
Spowoduje to zgłoszenie wyjątku, jeśli klucz nie zostanie znaleziony. – Axel