String matching: Difference between revisions
Content added Content deleted
(→{{header|Perl}}: present the answer in a more reader-friendly way) |
(→{{header|Perl}}: add solution for bonus task) |
||
Line 1,554: | Line 1,554: | ||
Using regexes: |
Using regexes: |
||
<lang perl>$str1 =~ /\Q$str2\E/ |
<lang perl>$str1 =~ /^\Q$str2\E/ # true if $str1 starts with $str2 |
||
$str1 =~ / |
$str1 =~ /\Q$str2\E/ # true if $str1 contains $str2 |
||
$str1 =~ /\Q$str2\E$/ # true if $str1 ends with $str2</lang> |
$str1 =~ /\Q$str2\E$/ # true if $str1 ends with $str2</lang> |
||
Using <code>index</code>: |
Using <code>index</code>: |
||
<lang perl>index($str1, $str2) |
<lang perl>index($str1, $str2) == 0 # true if $str1 starts with $str2 |
||
index($str1, $str2) |
index($str1, $str2) != -1 # true if $str1 contains $str2 |
||
rindex($str1, $str2) == length($str1) - length($str2) # true if $str1 ends with $str2</lang> |
rindex($str1, $str2) == length($str1) - length($str2) # true if $str1 ends with $str2</lang> |
||
Line 1,568: | Line 1,568: | ||
<lang perl>substr($str1, 0, length($str2)) eq $str2 # true if $str1 starts with $str2 |
<lang perl>substr($str1, 0, length($str2)) eq $str2 # true if $str1 starts with $str2 |
||
substr($str1, - length($str2)) eq $str2 # true if $str1 ends with $str2</lang> |
substr($str1, - length($str2)) eq $str2 # true if $str1 ends with $str2</lang> |
||
Bonus task ''(printing all positions where <code>$str2</code> appears in <code>$str1</code>)'': |
|||
<lang perl>print $-[0], "\n" while $str1 =~ /\Q$str2\E/g; # using a regex</lang> |
|||
<lang perl>my $i = -1; print $i, "\n" while ($i = index $str1, $str2, $i + 1) != -1; # using index</lang> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |