连接字符串列表
Concatenate list of strings
假设我有锡兰字符串列表。 (它不一定是 List<String>
;它可以是可迭代对象、序列、数组等)将所有这些字符串连接成一个字符串的最佳方法是什么?
您可以使用 "".join
,它实际上需要 {Object*}
,因此它适用于任何可迭代的对象,而不仅仅是 String
s。
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)));
最有效的解决方案是使用静态方法 String.sum()
,因为它在幕后针对 String
流(并使用 StringBuilder
)进行了优化。
value concat = String.sum(strings);
这里提出的其他解决方案虽然正确,但都使用基于Summable
的泛型函数,原则上速度稍慢。
假设我有锡兰字符串列表。 (它不一定是 List<String>
;它可以是可迭代对象、序列、数组等)将所有这些字符串连接成一个字符串的最佳方法是什么?
您可以使用 "".join
,它实际上需要 {Object*}
,因此它适用于任何可迭代的对象,而不仅仅是 String
s。
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)));
最有效的解决方案是使用静态方法 String.sum()
,因为它在幕后针对 String
流(并使用 StringBuilder
)进行了优化。
value concat = String.sum(strings);
这里提出的其他解决方案虽然正确,但都使用基于Summable
的泛型函数,原则上速度稍慢。