문자열을 가져 오기 위해 perl의 인덱스 함수에 크게 의존하는 프로그램을 작성 중입니다. 내 목표는이 문자열을 공백이없는 일련의 하위 문자열로 나누는 것입니다.
내가 가진 문제는 루프의 후반부에서 인덱스 함수가 공백을 건너 뛰기 시작한다는 것입니다.
테스트 데이터를 사용하고 있습니다.
1 12 a 2 5 PQ
나는 얻을 것으로 기대하고있다 :
1, 12, a, 2, 5, P, Q,
대신 나는 얻는다 :
1, 12, a, 2 5, PQ,
내 코드는 다음과 같습니다.
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;
}
미리 감사드립니다! 누구든지 내가 질문하는 방식이나 일반적으로 내 코드를 개선하는 방법에 대한 제안이 있으면 감사합니다.
문제는 다음 줄에 있습니다.
$space = index($ivalue, " ", $space + $i++);
사용하는 대신 $i
, 있는지 확인$space + 1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다