-1
문자열을 가져 오는 펄 함수에 크게 의존하는 프로그램을 작성하고 있습니다. 이 문자열을 공백이없는 일련의 하위 문자열로 나눌 나의 목적.perl 색인이 검색 값을 건너 뜁니다.
문제는 루프의 후반부에 인덱스 함수가 공백을 건너 뛰기 시작한다는 것입니다.
1 12 2 5 PQ
내가 얻을 것으로 기대하고있다 :
나는 테스트 데이터를 사용하고
(1), (12),, 2, 5 , P, Q,
대신에 :
(1), (12), 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;
}
감사합니다! 누구나 내가 내 질문이나 내 코드에 일반적으로 인정되는 방법을 개선하는 방법에 대한 제안이 있다면.
인쇄의이 주석있다, 그래서 우리는 출력을 얻을하지 않는 모든. 최종 산출물은 무엇입니까? – toolic
공백을 쉼표와 공백으로 바꾸는 경우 :'$ ivalue = ~ s///g;' – toolic
무엇을 하든지간에,'index'와'substr'는 거의 틀림없이 틀린 것입니다 직업을위한 도구. –