Perl - index関数とsubstr関数
初めてのPerlを読み直していると、以前は明らかに読み飛ばしていたであろう項目を見つけました。
文字列から特定のパターン抽出する方法なんて正規表現あるぜ〜と思っていたのですが、文字列処理に便利な関数があったのですね。
復習がてら書きます。
index関数
my $str = "My name is ryoana."; my $n = index($str, "ryoana"); print $n; # 11 と表示される
という感じで使うようです。
文字列全体から部分文字列の「開始位置」を探せます。
substr関数
index関数だけだと使いドコロが限定されそうですが、substr
関数を使うと更に便利な感じになるっぽいです。
substr
関数は、文字列全体から部分文字列をひっこぬいたり、部分的に書き換えたりしちゃいます。
my $str = "My name is ryoana."; my $name = substr($str, 11, 6); print $name; # "ryoana"と表示される
substr
関数に渡す第一引数は文字列全体、第二引数は引き抜く|書き換える文字列の「開始位置」、第三引数は文字列の「長さ」です。
第四引数に書き換えたい文字列を指定してあげることができます。(文字列全体を変数で指定した場合のみです。)
my $str = "My name is ryoana."; substr($str, index($str, "ryoana"), 6, "Mr.glasses"); print $str; # 「My name is Mr.glasses.」と表示される。
使えると便利な気がしないでもない関数達です。
上の例のようにindex
とsubstr
を一緒に使うとはかどりそうです。