当$ STRING以“ \ t \ t”结尾时,如何使split(/ \ t /,$ STRING)检测空值?

时间:2019-08-07 17:31:44

标签: string perl whitespace trailing

split(/\t/, $STRING)$STRING结尾时,如何让"\t\t"检测空项目?

使用Perl脚本,我试图根据项目之间的分隔符来分割字符串,然后计算并使用这些项目。但是,当字符串以s结尾时,脚本不会计算空项目。

示例:

string="value1\tvalue2\t\t\t\t"(value1,value2和4个空项目)

但它包含2个项目(值1,值2):

$STRING="value1\tvalue2\t\t\t\t";
print $STRING."\n";
my @F = split(/\t/, $STRING);
print scalar(@F)."\n";

# The number of items must match the number of header name
if( scalar(@F) == 6 )
            {
                    print  "Done \n";
            }

代码显示:

value1  value2      
2

而预期的是:

value1  value2  
6

1 个答案:

答案 0 :(得分:9)

通过添加split作为参数来更改-1行:

my @F = split(/\t/, $STRING, -1);

输出:

value1  value2              
6
Done 

对于每个perldoc splitsplit的参数为PATTERN, EXPR, LIMIT。在您当前的情况下,“省略了LIMIT,所以删除了“删除空白字段”。

通过为-1添加LIMIT值:

  

如果LIMIT为负,则将其视为任意大;产生尽可能多的字段。

因此,最后一个否定参数会阻止split丢弃尾随字段。