假设我们有
string one = "1";
string two = "2";
string three = "3";
我们想得到结果字符串
result = "1, 2, 3"
通过从上述三个变量构建它。
我知道我可以这样做
result = one + ", " + two + ", " + three;
但据我了解,然后会生成很多字符串并再次丢弃(首先1
,然后是1,
,然后是1, 2
,然后是1, 2,
,然后1, 2, 3
)。我知道我可以使用StringBuilder
来阻止一直创建新的字符串,但这也不是我想要的。
就我而言,我从一开始就知道字符串的外观,我只需要将变量的引用放入结果字符串中。
我知道我之前看过一种语法(C#)。我觉得它看起来有点像这样:
result = "{0}, {1}, {2}", one, two, three
问题:
语法是什么?
当模式已知时,将字符串放在一起的正确名称是什么?我假设有一个比“连接”更具体的词。在我的理解中,“连接”是你想要在运行时做的事情,当你在开始时不知道要连接哪个或多少个字符串时。
- 与使用(请参阅https://stackoverflow.com/a/299541/5333340 - 似乎StringBuilder
相比,性能或内存使用情况是否存在差异?string.Concat
更快。)< / p>
答案 0 :(得分:3)
以下是string.Join
方法。与您所需的String.Format
string one = "1";
string two = "2";
string three = "3";
string result = string.Join(", ", one, two, three);
答案 1 :(得分:2)
除了string.join和string.format之外,你还可以使用interpolated strings在许多情况下看起来比string.format更清晰 - 例如。
result = $"{one}, {two}, {three}";
答案 2 :(得分:1)
您正在寻找的语法是
result = String.Format("{0}, {1}, {2}", one, two, three);
答案 3 :(得分:1)
var result = string.Format("{0}, {1}, {2}", one, two, three);
或(C#6.0字符串插值,这只是string.Format
的语法糖)
var result = $"{one}, {two}, {three}";
字符串格式化或字符串插值。
As of .NET 4.0, string.Format
uses a cached StringBuilder
internally, so the performance difference is minimal.对于非常大和/或非常多的字符串,使用原始StringBuilder
将是最快的,但在大多数情况下,string.Format
在性能方面会很好,并且更具可读性。