我有一个字符串,我需要用字典中的值替换标记.它必须尽可能高效.使用string.replace执行循环只会消耗内存(字符串是不可变的,请记住).StringBuilder.Replace()会更好,因为它是用于字符串操作的吗?
我希望避免花费RegEx,但如果这样做会更有效率那么就这样吧.
注意:我不关心代码复杂性,只关心它运行的速度和消耗的内存.
平均统计数据:长度为255-1024个字符,字典中为15-30个字符.
我的代码String.Replace连续多次使用:
mystring = mystring.Replace("somestring", variable1);
mystring = mystring.Replace("somestring2", variable2);
mystring = mystring.Replace("somestring3", variable1);
Run Code Online (Sandbox Code Playgroud)
我怀疑有更好更快的方法.你会建议什么?
我有一个字符串,我需要做一些替换.我有一个Dictionary<string, 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;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
我正在将文本文件的内容写入StringBuilder,然后我想使用正则表达式对StringBuilder中包含的文本执行许多查找/替换操作.
我遇到了一个问题,因为StringBuilder替换函数不能接受正则表达式参数.
我可以在普通字符串上使用Regex.Replace,但我认为这是低效的,因为由于.net字符串是不可变的,因此需要在内存中创建两个字符串副本.
一旦我更新了文本,我打算将其写回原始文件.
什么是解决我问题的最佳和最有效的方法?
编辑
除了下面的答案,我发现以下问题也解释了我的问题 -