检查字符串是另一个字符串的子集,加上在Perl在开始时一个小数字
问题描述:
我想看看是否一个字符串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只能用于列表,有没有微妙的方法来做到这一点?谢谢!
答
if (index(STRING,SUBSTRING) >= 0) and print "SUBSTRING in STRING\n" ;
答
安德烈的问题解决了部分实际问题。 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$/;
这正是我一直在寻找的还有Perl中的一个SUBSTR功能以及。大! – 2012-04-19 04:01:34