如何将字符串数组转换为 D 中的字符串?

How to convert array of strings to string in D?

我有这样的字符串数组:

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 将范围内的元素转换为其他元素,它 returns 一个惰性范围,其中每个元素都是将元素从原始范围传递到拉姆达函数。在这种情况下,lambda 获取输入字符串并创建一个新字符串,该字符串周围有引号,因此将 foo 传递给它的结果是一系列 string,周围有引号。

std.array.join 然后获取一个范围,并急切地将其每个元素与给定的分隔符连接起来,将每个元素和 returns 一个新数组分开,因为它的范围是 string是 returns 一个 string。因此,通过将调用 map", " 的结果作为分隔符,您得到的字符串由用逗号引用并分隔的原始字符串组成。

std.algorithm.joiner 会做与 join 相同的事情,除了它会产生惰性范围而不是数组。

或者,使用 std.string.format 您的格式说明符应该是这样的: auto joinedstring = format("%(\“%s\",%)", stringarray)

由于我在移动设备上,因此未经测试,但它与它类似!