c# - 既不使用 + 也不使用 StringBuilder 从变量构建字符串

标签 c# string string-concatenation

假设我们有

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

问题:

  • 语法是什么?

  • 在模式已知的情况下,将一个字符串从各个部分组合起来的正确名称是什么?我假设有一个比“连接”更具体的词。在我的理解中,“连接”是您想在运行时执行的操作,此时您一开始并不知道要连接哪些或多少个字符串。

- 与使用 StringBuilder 相比,在性能或内存使用方面是否存在差异?(参见 https://stackoverflow.com/a/299541/5333340 - 似乎是 string.Concat 更快。​​)

最佳答案

这是 string.Join 方法。与您所需的 String.Format

相比,这避免了分隔符的冗余插入
string one = "1";
string two = "2";
string three = "3";
string result = string.Join(", ", one, two, three);

关于c# - 既不使用 + 也不使用 StringBuilder 从变量构建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39764994/

相关文章:

Java lambda 表达式 : How to concatenate key and set of values from a hashmap?

c# - 获取小数点的最后(即结尾)3 位数字 (.NET)

c# - 使用 SymmetricSecurityKey 签署 jwt 时如何指定 child ?

c# - JsonUtility 的包装器如何工作

c - 在共享内存进程中分配字符串

php - 如何将 PHP 和 JavaScript 字符串与引号连接起来以正确求值

bash - 在 Bash 中连接变量

c# - 如何从 FQL 枚举响应集

java - 格式化包含数字的字符串

iphone - Swift 的字符串连接问题