我正在搜索一个名为join
的许多其他语言的函数。它的行为与split
相反。
我希望str_join(split("1;2", ";"), ";")
成为"1:2"
答案 0 :(得分:1)
我认为您可以通过~{
中的~}
printf
(输出中的迭代)构造获得您想要的效果。另请注意,我也使用了~^
(从迭代中逃脱)构造。
(%i5) printf (true, "~{~a~^:~}~%", [1,2,3,4]);
1:2:3:4
(%o5) false
? printf
没有详细说明。但printf
的输出控制操作符直接从Common Lisp借用,因此您可以在CL Hyperspec中找到信息。请参阅:http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm
编辑:您可以通过printf(false, ...)
获取字符串作为返回值(而不是打印到标准输出)。
答案 1 :(得分:0)
我不确定它是否存在,但您可以这样定义:
str_join(list, delim) := block(
if length(list) = 0 then return (""),
lreduce(
lambda(
[p,c],
if not(stringp(p)) then p: string(p),
if not(stringp(c)) then c: string(c),
concat(p, delim, c)
),
list
)
);