如何在列之间插入分隔符?
How to insert separators between columns?
我在 @columns
中有列:
my @columns =('column1', 'column2', 'column3');
我在 @separators
中有分隔符:
my @separators = (',', '|');
我想在列之间插入分隔符,一一插入:
column1,column2|column
我的解决方案是:
(@columns »~» (|@separators,"")).join("")
这里我有三列和两个分隔符,在 N
列之间插入 N-1
分隔符怎么样?
假设 @separators
具有正确数量的值,您可以使用 roundrobin
.
roundrobin( @columns, @separators ).flat.join()
所以这应该适用于任何长度的 @columns
或 @separators
:
首先我们使用 >>,>>
超级运算符来制作列表列表。
(@columns >>,>> @separators)
给出:
[("column1", ","), ("column2", "|"), ("column3", ",")]
然后我们用一张纸条把它压平成一个列表。
(@columns >>,>> @separators).map( |* )
给出:
("column1", ",", "column2", "|", "column3", ",").Seq
然后我们得到除最后一个值以外的所有值的数组:
(@columns >>,>> @separators).map(|*).head(*-1)
对于:
("column1", ",", "column2", "|", "column3")
终于白手起家了:
(@columns >>,>> @separators).map(|*).head(*-1).join("")
最终结果:
column1,column2|column3
更改列数或分隔符不会产生任何影响。
可能是另一个解决方案:
my @columns =('column1', 'column2', 'column3');
my @separators = (',', '|');
sub sep { $^a ~@separators[$++] ~$^b};
say [[&sep]] @columns;
say [[&sep]] @columns; # but another call cause error
Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in sub sep at <unknown file> line 1
in block <unit> at <unknown file> line 1
Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in sub sep at <unknown file> line 1
in block <unit> at <unknown file> line 1
column1column2column3
我在 @columns
中有列:
my @columns =('column1', 'column2', 'column3');
我在 @separators
中有分隔符:
my @separators = (',', '|');
我想在列之间插入分隔符,一一插入:
column1,column2|column
我的解决方案是:
(@columns »~» (|@separators,"")).join("")
这里我有三列和两个分隔符,在 N
列之间插入 N-1
分隔符怎么样?
假设 @separators
具有正确数量的值,您可以使用 roundrobin
.
roundrobin( @columns, @separators ).flat.join()
所以这应该适用于任何长度的 @columns
或 @separators
:
首先我们使用 >>,>>
超级运算符来制作列表列表。
(@columns >>,>> @separators)
给出:
[("column1", ","), ("column2", "|"), ("column3", ",")]
然后我们用一张纸条把它压平成一个列表。
(@columns >>,>> @separators).map( |* )
给出:
("column1", ",", "column2", "|", "column3", ",").Seq
然后我们得到除最后一个值以外的所有值的数组:
(@columns >>,>> @separators).map(|*).head(*-1)
对于:
("column1", ",", "column2", "|", "column3")
终于白手起家了:
(@columns >>,>> @separators).map(|*).head(*-1).join("")
最终结果:
column1,column2|column3
更改列数或分隔符不会产生任何影响。
可能是另一个解决方案:
my @columns =('column1', 'column2', 'column3');
my @separators = (',', '|');
sub sep { $^a ~@separators[$++] ~$^b};
say [[&sep]] @columns;
say [[&sep]] @columns; # but another call cause error
Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in sub sep at <unknown file> line 1
in block <unit> at <unknown file> line 1
Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in sub sep at <unknown file> line 1
in block <unit> at <unknown file> line 1
column1column2column3