我正在编写一个程序,它严重依赖于perl的索引函数来获取字符串。我的目标是将这个字符串分成一系列没有任何空格的子串。
我遇到的问题是,在循环的后半部分,索引函数开始跳过空格。
我正在使用测试数据:
1 12 a 2 5 P Q
我期待得到:
1,12,a,2,5,P,Q,
相反,我得到:
1,12,a,2 5,P Q,
我的代码如下:
use 5.010;
use strict;
use warnings;
my $ivalue = <stdin>;
chomp($ivalue);
$ivalue = $ivalue . " ";
my $current;
my $space = 0;
my $safespace = 0;
my $lastspace = 0;
my $closestspace = 0;
my $i = 0;
# Test data - 1 12 a 2 5 P Q
while ($space != -1){
$space = index($ivalue, " ", $space + $i++);
$closestspace = $space - $lastspace;
#print $lastspace . " " . $space . " = " . $closestspace . "; ";
$current = substr($ivalue, $lastspace, $closestspace);
#say "substring = " . $current;
$lastspace = $space + 1;
}
提前致谢!如果有人对如何改进我提出问题的方式或我的代码提出任何建议,我们也会对此表示赞赏。
答案 0 :(得分:0)
问题出在这一行:
$space = index($ivalue, " ", $space + $i++);
而不是使用$i
,请设置$space + 1