私はjoin
と呼ばれる他の多くの言語の機能を探しています。 split
の逆のように動作します。最大値に分割の逆がありますか?結合関数?
私はそれが存在するかどうかわからないんだけど、あなたはこのようにそれを定義することができ、それはstr_join(split("1;2", ";"), ";")
が"1:2"
私はjoin
と呼ばれる他の多くの言語の機能を探しています。 split
の逆のように動作します。最大値に分割の逆がありますか?結合関数?
私はそれが存在するかどうかわからないんだけど、あなたはこのようにそれを定義することができ、それはstr_join(split("1;2", ";"), ";")
が"1:2"
になるだろうと動作するように期待:
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
)
);
私はあなたが効果を得ることができると思います~{
~}
(出力の反復)の構文を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
EDIT:printf(false, ...)
で(標準出力に出力する代わりに)戻り値として文字列を取得できます。