PerlならサンプルコードPerl入門

2008-02-25

index関数 - 文字の検索

  1. Perl
  2. 関数
  3. here

 文字列を検索するには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";

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証