perl索引跳过搜索值

时间:2016-10-21 18:57:20

标签: string perl debugging

我正在编写一个程序,它严重依赖于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;
}

提前致谢!如果有人对如何改进我提出问题的方式或我的代码提出任何建议,我们也会对此表示赞赏。

1 个答案:

答案 0 :(得分:0)

问题出在这一行:

$space = index($ivalue, " ", $space + $i++);

而不是使用$i,请设置$space + 1