连接字符串列表

Concatenate list of strings

假设我有锡兰字符串列表。 (它不一定是 List<String>;它可以是可迭代对象、序列、数组等)将所有这些字符串连接成一个字符串的最佳方法是什么?

您可以使用 "".join,它实际上需要 {Object*},因此它适用于任何可迭代的对象,而不仅仅是 Strings。

value strings = {"Hello", " ", "world", "!"};
value string = "".join(strings); // "Hello world!"

调用join方法的字符串就是分隔符。空字符串 "" 是简单的连接。

其他一些建议:

由于字符串是Summable,你可以使用sum函数:

print(sum(strings));

请注意,这需要一个非空流(sum 无法知道空流的哪个值 return);如果您的流是 possibly-empty,请在前面加上空字符串,e。 G。在命名参数调用中:

print(sum { "", *strings });

您还可以使用 concatenate 函数连接元素流,将字符串(字符流)连接成单个字符序列,然后将该序列转换为适当的 String 再次.

print(String(concatenate(*strings)));

您还可以使用 fold 操作更手动地完成 sum 的等效操作:

print(strings.fold("")(uncurry(String.plus)));

Try it!

最有效的解决方案是使用静态方法 String.sum(),因为它在幕后针对 String 流(并使用 StringBuilder)进行了优化。

value concat = String.sum(strings);

这里提出的其他解决方案虽然正确,但都使用基于Summable的泛型函数,原则上速度稍慢。