Perlコーディング

文字列操作関数

2007年11月28日
文字列の長さというか、バイト数が返ってきます。jperlなら日本語対応?
length($str);
 $str = "abc" なら3
 $str = "あいうえお" なら10
 $str = "あaいiう" なら8


部分文字列
substr($str, offset, length);
 $str = "あいうえお"  offset=0 length=1 なら1バイト分に該当する文字
 $str = "あいうえお"  offset=0 length=2 ならあ
 $str = "abcdefg"  offset=3 length=4 ならdefg
 $str = "abcdefg"  offset=3 length=5 でもdefg
 $str = "abcdefg"  offset=2 ならcdefg


文字列分割
@array = split(/ pattern /, $str);
 $str = "2007-11-28" pattern="-" なら array[0]=2007 array[1]=11 array[2]=28
 $str = "2007/11/28" pattern="\/"(/の場合は\でエスケープ) なら array[0]=2007 array[1]=11 array[2]=28 
 patternは正規表現もできる


フォーマット
print()と同じフォーマットだけど、ファイルや画面出力はしない
$yyyymmdd = sprintf("%04d/%02d/%02d", $year, $month, $day);
 $year=2007 $month=11 $day=28 なら 2007/11/28
 $year=2007 $month=12 $day=1 なら 2007/12/01


文字列検索
先頭から検索し、最初に見つかった位置を返す
index($str, substr, position);
 $str = "abcdefgabc" substr="f" なら5
 $str = "abcdefgabc" substr="b" なら1

後ろから検索し、最初に見つかった位置を返す
rindex($str, substr, position);
 $str = "abcdefgabc" substr="f" なら5
 $str = "abcdefgabc" substr="b" なら8