说我有锡兰的字符串列表。 (它不必是List<String>
;它可以是可迭代的,序列,数组等。)将所有这些字符串连接成一个字符串的最佳方法是什么?
答案 0 :(得分:3)
其他一些建议:
由于字符串为Summable
,您可以使用sum
函数:
print(sum(strings));
请注意,这需要一个非空的流(sum
无法知道为空流返回哪个值);如果您的流可能为空,请在前面添加空字符串,例如: G。在命名参数调用中:
print(sum { "", *strings });
您还可以使用连接元素流的concatenate
函数将字符串(字符流)连接到单个字符序列中,然后将该序列转换为正确的String
试。
print(String(concatenate(*strings)));
您还可以使用sum
操作手动执行相当于fold
的操作:
print(strings.fold("")(uncurry(String.plus)));
答案 1 :(得分:3)
最有效的解决方案是使用静态方法String.sum()
,因为它针对String
的流优化(并使用StringBuilder
)。
value concat = String.sum(strings);
此处提出的其他解决方案虽然正确,但都使用基于Summable
的泛型函数,原则上这些函数稍微慢一点。
答案 2 :(得分:2)
您可以使用"".join
,它实际上需要{Object*}
,因此它适用于任何可迭代的对象,而不仅仅是String
。
value strings = {"Hello", " ", "world", "!"};
value string = "".join(strings); // "Hello world!"
调用join
方法的字符串是分隔符。空字符串""
是简单连接。