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
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
コメント