gpt4 book ai didi

c# - 在这种情况下,String.Format 或 String.Replace 哪个更快?

转载 作者:太空狗 更新时间:2023-10-29 22:08:42 31 4
gpt4 key购买 nike

string str = 'my {0} long string {1} need formatting';

我是否应该执行以下操作,

str = string.Format(str, "really", "doesn't");

或者像这样创建一个方法并调用 str = str.ReplaceWithValues("really", "doesn't");

 public string ReplaceWithValues(this string str, params object[] values) {
string ret = str;
for (int i = 0; i < values.Length; i++) {
ret = str.Replace(string.Concat("{", i, "}"), values.ToString());
}
return ret;
}

似乎 StringBuilder.AppendFormat() 在进行像这样的简单替换时效率不高,因为它逐个字符地遍历字符串。

最佳答案

为什么要重新发明 String.Format?

我只想使用框架方法 - 它完全可以满足您的需求,功能强大,并且对后续人员来说很有意义...


满足你的好奇心:

It seems like StringBuilder.AppendFormat() isn't efficient when it comes to doing simple replacements like this since it goes character by character through the string.

String.Format,仅供引用,在内部使用 StringBuilder.AppendFormat。也就是说,StringBuilder.AppendFormat 非常高效。您提到它通过字符串“逐个字符”地进行 - 但是,在您的情况下,您使用的是对 Replace 和 Concat 的多次调用。使用 StringBuilder 单次遍历字符串可能会快得多。如果你真的需要知道——你可以分析这个来检查。在我的机器上,如果我同时运行以上 1,000,000 次,我会得到以下计时:

String.Format -  1029464 ticks
Custom method - 2988568 ticks

关于c# - 在这种情况下,String.Format 或 String.Replace 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833044/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com