0

string1がperlのstring2にあるかどうかを確認しようとしています

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

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

これを行う 1 つの方法は、$item2 の先頭にある 2 を取り除いてから比較することです。次のように:

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

次に、比較できます。むしろ、Item2 で Item1 を grep し、true の場合は残りを実行することをお勧めします。しかし、grep はリストに対してのみ機能します。これを行う微妙な方法はありますか? ありがとう!

4

2 に答える 2

1

アンドレイの質問は、実際の質問の一部を解決します。indexその部分文字列がパターンに存在するかどうかを教えてくれますが、彼がそれに答えた方法では、2 つの文字列が完全に等しいという同じ評決を返す可能性があります。

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$/;
于 2012-04-19T06:14:01.927 に答える
1
if (index(STRING,SUBSTRING) >= 0) and print "SUBSTRING in STRING\n" ;
于 2012-04-19T03:29:52.813 に答える