文字列の検索
文字列の長さを取得するにはlength関数、文字列中から部分文字列を検索するにはindex、rindex関数を使います。
#!/usr/bin/perl ############################################# # 文字列検索のサンプル # Author: "Perl Programming Tips" ############################################# $string1 = "abcdefdefdef\n"; $string2 = "あいうえ\n"; # 文字列の長さを取得 print "length1:" . length($string1) . "\n"; print "length2:" . length($string2) . "\n"; # 部分文字列を検索(先頭から) print "index1:" . index($string1, "def") . "\n"; # 部分文字列を検索(5文字目から) print "index2:" . index($string1, "def", 4) . "\n"; # 部分文字列を検索(2バイト文字の場合) print "index3:" . index($string2, "うえ") . "\n"; # 部分文字列を検索(見つからない場合) print "index4:" . index($string1, "ddd") . "\n"; # 部分文字列を後方検索(末尾から) print "rindex1:" . rindex($string1, "def") . "\n"; # 部分文字列を後方検索(9文字目から) print "rindex2:" . rindex($string1, "def", 8) . "\n";
実行結果は次のようになります。
[g@630m pl]$ perl scalar02_01.pl length1:13 length2:9 index1:3 index2:6 index3:4 index4:-1 rindex1:9 rindex2:6 [g@630m pl]$
length関数は文字列のバイト数を返します。改行文字も含みます。2バイト文字の場合は1文字で2バイトになります。文字数ではないので注意が必要です。
length
文字列のバイト数を取得する。
書式
length val
引数
val:
文字列
戻り値
文字列のバイト数
次は文字列から部分文字列を検索する方法です。index関数は文字列の先頭から、rindex関数は文字列の後方から検索します。それぞれ先頭の文字を0としたインデックス値を返します。2バイト文字の場合は1文字で2つのインデックスを使います。つまり、ここで取得または指定するインデックス値はバイト単位です。
index
文字列から部分文字列を検索する。
書式
index string, substr, [start]
引数
string:
検索対象の文字列
substr:
検索する部分文字列
start:
検索を開始するインデックス値
戻り値
先頭を0としたインデックス値。見つからない場合は-1。
rindex
文字列から部分文字列を後方から検索する。
書式
rindex string, substr, [start]
引数
string:
検索対象の文字列
substr:
検索する部分文字列
start:
検索を開始するインデックス値
戻り値
先頭を0としたインデックス値。見つからない場合は-1。