У меня есть строка, на которой мне нужно сделать некоторые замены. У меня есть Dictionary<string, string>
, где я определил пары замены поиска. Я создал следующие методы расширения для выполнения этой операции:C# String заменить на словарь
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;
}
Есть ли лучший способ сделать это?
Великого ответа. Я думаю, что ваше предложение на самом деле будет лучше, чем повторение всего словаря, поскольку регулярное выражение заменит только токены. Он не будет проверять все, что может быть внутри.Поэтому, если у меня есть большой словарь и небольшое количество токенов во входной строке, что на самом деле может дать моему приложению повышение. – RaYell
Очень полезно. Я реорганизовал его как метод расширения для Regex, который я не могу показать в комментарии, поэтому добавим в качестве избыточного дополнительного ответа ниже. –
Это вызовет исключение, если ключ не найден. – Axel