如何将字符串数组转换为 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)
由于我在移动设备上,因此未经测试,但它与它类似!
我有这样的字符串数组:
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)
由于我在移动设备上,因此未经测试,但它与它类似!