我有一些字符串,如:
string [] foo = ["zxc", "asd", "qwe"];
Run Code Online (Sandbox Code Playgroud)
我需要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"`);
Run Code Online (Sandbox Code Playgroud)
std.algorithm.map接受一个lambda,它将该范围内的元素转换为其他元素,并返回一个惰性范围,其中每个元素是将元素从原始范围传递给lambda函数的结果.在这种情况下,lambda接受输入字符串并创建一个在其周围有引号的新字符串,因此传递foo给它的结果是一系列strings,它们周围有引号.
std.array.join然后取一个范围并急切地将每个元素与给定的分隔符连接起来,将每个元素分开并返回一个新的数组,因为它给出了一系列的strings,它返回一个string.因此,通过给它调用的结果map,并", "为分隔符,你会得到你的字符串由引号中并用逗号分隔的原始字符串.
std.algorithm.joiner会做同样的事情join,除了它导致惰性范围而不是数组.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |