最大值是否存在相反的分裂?连接功能?

时间:2017-10-25 13:19:59

标签: maxima

我正在搜索一个名为join的许多其他语言的函数。它的行为与split相反。

我希望str_join(split("1;2", ";"), ";")成为"1:2"

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
    )
);