最新の「新着記事」はここから New!
2008-02-25
index関数 - 文字の検索
文字列を検索するにはindex関数を使用します。第1引数には検索対象の文字列、第2引数には検索したい文字列を指定します。第3引数には検索開始位置を指定することができます。省略した場合は文字列の最初から検索が行われます。見つかればその位置を、見つからなければ-1が返却されます。
my $pos = index($target, $str);
index関数を使う。
2回目に出現する文字を検索する
my $word_love_pos_second = index($message, 'love', $word_love_pos_first + 1);
indexの第3引数に、検索開始位置を指定することができる。1回目の検索で、発見した位置の次の位置を指定する。
検索した文字のすべての位置を取得する
{
my @found_positions = ();
my $found_posision = -1;
while (1) {
$found_posision = index($message, 'love', $found_posision + 1);
last if $found_posision == -1;
push @found_positions, $found_posision;
}
print "見つかった位置: " . join(', ', @found_positions) . "\n";
}
while文で、戻り値が-1になるまで,index関数を繰り返す。
サンプル
index関数を使った、カンマの最初の位置を調べるサンプルです。
# カンマの最初の位置を調べる my $csv = 'aaa,bbb,ccc'; my $pos = index($csv, ',');
文字列が見つかった場合にのみ処理を行うサンプルです。
# 文字列が見つかった場合にのみ処理を行う my $string = "I'm Ken"; my $search = 'Ken'; if (index($string, $search) != -1) { print "Found\n"; }
その他のサンプルです。
use strict; use warnings; my $message = "love love love."; print "\$message = $message\n"; print "\n"; # 1: 文字を検索する。 # index関数を使う。index( $str, $search ); # 見つかればその位置を、見つからなければ-1を返却 my $word_love_pos_first = index( $message, 'love' ); print "1: 文字を検索する\n"; print "\$word_love_pos_first = $word_love_pos_first\n"; print "\n"; # 2: 2回目に出現する文字を検索する # indexの第3引数に、検索開始位置を指定する。 print "2: 2回目に出現する文字を検索する\n"; my $word_love_pos_second = index($message, 'love', $word_love_pos_first + 1); print "\$word_love_pos_second = $word_love_pos_second\n"; print "\n"; # 3: 検索した文字のすべての位置を取得する。 # while文で、戻り値が-1になるまで繰り返す。 print "3: 検索した文字のすべての位置を取得する。\n"; { my @found_positions = (); my $found_posision = -1; while (1) { $found_posision = index( $message, 'love', $found_posision + 1 ); last if $found_posision == -1; push @found_positions, $found_posision; } print "見つかった位置: " . join(', ', @found_positions) . "\n"; } print "\n";


