ahm*_*100 3 string perl whitespace trailing
我怎样才能使split(/\t/, $STRING)检测空项目时,$STRING两端用"\t\t"?
使用Perl脚本,我试图根据项目之间的分隔符来分割字符串,然后计算并使用这些项目。但是,当字符串以s结尾时,脚本不会计算空项目。
例:
string="value1\tvalue2\t\t\t\t" (值1,值2和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";
}
Run Code Online (Sandbox Code Playgroud)
代码显示:
value1 value2
2
Run Code Online (Sandbox Code Playgroud)
而预期的是:
value1 value2
6
Run Code Online (Sandbox Code Playgroud)
split通过添加-1为参数来更改行:
my @F = split(/\t/, $STRING, -1);
Run Code Online (Sandbox Code Playgroud)
输出:
value1 value2
6
Done
Run Code Online (Sandbox Code Playgroud)
每perldoc split时,参数split都是PATTERN, EXPR, LIMIT。在您当前的情况下,“省略了LIMIT,所以删除了“尾随空白字段”。
通过添加以下-1值LIMIT:
如果LIMIT为负,则将其视为任意大;产生尽可能多的字段。
因此,否定的最终论点可以防止split丢弃尾随字段。