【问题标题】:Work around for split function when last character is a terminator当最后一个字符是终止符时解决拆分功能
【发布时间】:2017-02-06 21:50:09
【问题描述】:

我有这行包含 20 个字段的数据:

my $data = '54243|601|0|||0|N|0|0|0|0|0||||||99582|';

我正在使用它来拆分数据:

my @data = split ('\|'), $data;

但是,你得到的不是 20 条数据,而是 19 条:

print scalar @data;

如果最后一个字符是|,我可以手动将push 一个空字符串添加到@data,但我想知道是否有更糟糕的方法。

【问题讨论】:

  • 您的输入只有 18 个 | 字符(所以 18-19 个数据)

标签: perl split


【解决方案1】:

my @data = split /\|/, $data, -1;

-1 告诉split 包含空的尾随字段。

(您在正则表达式周围的括号不正确,导致 $data 不被视为 split 的参数。此外,除了一个例外,split 的第一个参数始终是正则表达式,因此最好将其指定为正则表达式不是将被解释为正则表达式的字符串。)

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 2017-04-23
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多