2012-04-19 4 views
0

나는 문자열 1 그것을 제거하는 것입니다 할확인 확인합니다

$Item1="I Like Coffee"; 
$Item2="2 I Like Coffee"; 
$Item3="I like Milke"; 

$Item1=$Item2 but $Item1!=$item3 

한 가지 방법은 펄에서 문자열 2에 있는지 확인하기 위해 노력하고 $ item2의 시작 부분에서 2를 빼고 비교합니다. 다음과 같이 :

$item=~s/(\d+)//; 

다음과 비교할 수 있습니다. 더 좋은 방법은 Item2의 Item1에 대해 grep하는 것이고 나머지는 true로 처리하는 것입니다. 하지만 grep은 목록에서만 작동합니다.이 작업을 수행하는 미묘한 방법이 있습니까? 감사!

답변

1
if (index(STRING,SUBSTRING) >= 0) and print "SUBSTRING in STRING\n" ; 
+0

이 나는 ​​펄에서 SUBSTR 함수뿐만 아니라 또한이 찾고 정확히 무엇을이었다. 큰! –

1

Andrey의 질문은 실제 질문의 일부를 해결합니다. index은 패턴에 해당 하위 문자열이 있는지 여부를 알려주지 만 두 문자열이 정확히 일치한다는 동일한 답신을 반환 할 수있는 방법으로 알려줍니다.

sub majics_match { 
    my ($look, $cand) = @_; 
    return 1 unless length($look // ''); 
    return 0 unless length($cand // ''); 
    my $pos = index($cand, $look); 
    return 0 unless $pos > 0; 
    return substr($cand, 0, $pos) =~ m/^\d\s+/ 
     && substr($cand, $pos + length($look)) eq '' 
     ; 
} 

은 ... 또는 당신은 정규식이 할 수 있습니다 :

$cand =~ m/^\d \Q$look\E$/; 
관련 문제