我有像这样的字符串数组:
string [] foo = ["zxc", "asd", "qwe"];
我需要string
从他们创造。像:("zxc", "asd", "qwe"
是的,每个元素都需要用引号引起来,并以逗号分隔,但应该是字符串,而不是字符串数组。
如何使用功能样式?
import std.algorithm, std.array, std.string;
string[] foo = ["zxc", "asd", "qwe"];
string str = foo.map!(a => format(`"%s"`, a)).join(", ");
assert(str == `"zxc", "asd", "qwe"`);
std.algorithm.map
接受一个lambda值,该值将范围内的元素转换为其他值,并返回一个惰性范围,其中每个元素都是将元素从原始范围传递到lambda函数的结果。在这种情况下,lambda接受输入字符串并创建一个新字符串,并在其周围加上引号,因此传递foo
给它的结果是一系列string
s周围都带有引号。
std.array.join
然后取一个范围,并急切地将其每个元素与给定的分隔符连接起来,并分隔每个元素,并返回一个新数组,由于给定的范围是string
s,因此返回a string
。因此,通过给它调用的结果map
,并", "
为分隔符,你会得到您的字符串做出报价,用逗号分隔的原始字符串组成。
std.algorithm.joiner
与会做相同的事情join
,除了会导致延迟范围而不是数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句