2012-04-19 57 views
0

我想看看是否一个字符串1是包含字符串在Perl检查字符串是另一个字符串的子集,加上在Perl在开始时一个小数字

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

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

一种方式来做到这一点是剥离在$ item2的开头输出2,然后进行比较。如下:

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

然后我们可以比较一下。 相反,更好的方法是grep Item2中的Item1,如果是true,则执行其余的操作。但是,grep只能用于列表,有没有微妙的方法来做到这一点?谢谢!

回答

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

这正是我一直在寻找的还有Perl中的一个SUBSTR功能以及。大! – 2012-04-19 04:01:34

1

安德烈的问题解决了部分实际问题。 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$/; 
相关问题