PerlPlus

index関数

広告

「index」関数は対象となる文字列の中に部分文字列が含まれるか検索し、最初の位置を返します。

※最後の位置を返すには「rindex関数」を使用します。

index
index(STR,SUBSTR[,POSITION])
指定した部分文字列が含まれるかどうかを検索し、含まれていた場合は最初に
現れた位置を返します。

パラメータ:
  STR  対象の文字列
  SUBSTR  検索する部分文字列
  POSITION  検索開始位置
戻り値:
  見つかった場合は最初の位置、見つからなかった場合は-1

1番目の引数には対象となる文字列を指定します。

2番目の引数には検索する部分文字列を指定します。

3番目の引数には検索を開始する位置を指定します。省略した場合は先頭の文字となる「0」が指定されたものとして扱われます。

部分文字列が見つかった場合にはその位置を返します。見つからなかった場合は -1 が返されます。

Hamamatsu を対象に ma を検索する

Hamamatsu
---------
012345678

この場合は2の位置に最初の ma が見つかるため 2 が返される

また検索開始位置を指定した場合は、指定した位置より後で最初に見つかった位置を返します。

Hamamatsu を対象に検索位置 3 から ma を検索する。

Ham|amatsu
---------
012|345678

この場合は4の位置に最初の ma が見つかるため 4 が返される

具体的には次のように記述します。

my $target = "Hamamatsu";
my $pos = index($target, "ma");

サンプルプログラム

では簡単なプログラムで確認して見ます。

test4-1.pl

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my $target = "Hamamatsu";
print "検索対象:$target, 検索文字:ma¥n";

my $pos;
$pos = index($target, "ma");
print "開始0, 位置:$pos¥n";

$pos = index($target, "ma", 2);
print "開始2, 位置:$pos¥n";

$pos = index($target, "ma", 3);
print "開始3, 位置:$pos¥n";

$pos = index($target, "ma", 4);
print "開始4, 位置:$pos¥n";

$pos = index($target, "ma", 5);
print "開始5, 位置:$pos¥n";

上記を「test4-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。

index関数

( Written by Tatsuo Ikura )