连接字符串列表

时间:2018-04-08 19:25:04

标签: string-concatenation ceylon

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

3 个答案:

答案 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)));

Try it!

答案 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方法的字符串是分隔符。空字符串""是简单连接。