Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100848
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-06 11:04
文章分类

全部博文(20)

文章存档

2011年(1)

2010年(14)

2009年(4)

2008年(1)

我的朋友

分类:

2010-07-28 15:38:00

> 第9章 文字列とディレクトリの操作
  第9章 文字列とディレクトリの操作



9-1. 文字列の検索

  • 文字列を検索する関数として、index関数rindex関数 があります。

    構文 意味
    index ( 全体文字列, 検索文字列, 開始位置 )
    index ( 全体文字列, 検索文字列 )
    「全体文字列」の中で、「開始位置」の位置から「検索文字列」が最初に出現する位置を返す。
    「開始位置」が省略されると、先頭から検索する。(先頭の位置は 0 とする)
    検索して見つからなければ -1 を返す。
    rindex ( 全体文字列, 検索文字列, 開始位置 )
    rindex ( 全体文字列, 検索文字列 )
    「全体文字列」の中で、「検索文字列」が最後に出現する位置を返す。
    「開始位置」を付加することで、値として返すことが許される、最も右よりの位置を指定することができる。
    検索して見つからなければ -1 を返す。


    ▼例1
    $str = "ABCDEF";
    $sub = "CD";

    $find = index ($str, $sub);

    if ($find >= 0) {
         $find++;
         print "先頭から$find番目に見つかりました。
    \n";
    } else {
         print "見つかりませんでした。
    \n";
    }


    <出力結果>
    先頭から3番目に見つかりました。


    「例1」では、最初に見つかった部分を表示させていますが、文字列の中で見つかるものすべてを表示させたい場合には、次の「例2」のように記述するとよいでしょう。

    ▼例2
    $str = "apple orange banana";
    $sub = "a";

    while ( ( $find = index ($str, $sub, $find ) ) >= 0 ) {
         $find++;
         print "$find番目に発見。
    \n";
    }


    <出力結果>
    1番目に発見。
    9番目に発見。
    15番目に発見。
    17番目に発見。
    19番目に発見。




9-2. 文字列の操作
  • 文字列を操作する関数として、substr関数があります。文字列の取り出し、置き換え、削除、追加などを行うことができます。

    構文 意味
    substr ( 全体文字列, 開始位置, 文字長 )
    substr ( 全体文字列, 開始位置 )
    「全体文字列」から部分文字列を取り出して返す。
    部分文字列は、文字列の先頭から数えて「開始位置」番目から始まる(先頭は 0 から数える)。
    「開始位置」が負の場合は、文字列の末尾からマイナス「開始位置」文字だけ戻ったところが部分文字列の先頭になる。
    「文字長」を省略すると、文字列の末尾までがすべて返される。


    ▼文字列の取り出し
    $word = "milktea";
    $str = substr($word, 0, 4);
    print "$str
    \n";

    <出力結果>
    milk


    substr関数を左辺に置き、代入の対象とすることで、部分文字列の置き換えや追加などが可能となります。

    ▼文字列の追加
    $word = "tea";
    substr($word, 0, 0) = "milk";
    print "$word
    \n";

    <出力結果>
    milktea


    ▼文字列の置き換え
    $word = "milktea";
    substr($word, 0, 4) = "lemon";
    print "$word
    \n";

    <出力結果>
    lemontea


    ▼文字列の削除(先頭から削除)
    $word = "milktea";
    substr($word, 0, 4) = "";
    print "$word
    \n";

    <出力結果>
    tea


    ▼文字列の削除(末尾から削除)
    $word = "milktea";
    substr($word, -3, 3) = "";
    print "$word
    \n";

    <出力結果>
    milk




9-3. 文字列の整形
  • 文字列を整形する関数として、printf関数sprintf関数 があります。文字列や数値を指定の書式に変換を行います。
  • printf関数 は整形した値をファイルハンドルに出力し、sprintf関数 は整形した値を返します。

    関数 構文 意味
    printf関数 printf ( 書式, リスト ) 「リスト」の値を「書式」に整形して、ファイルハンドルに出力する。
    sprintf関数 sprintf ( 書式, リスト ) 「リスト」の値を「書式」に整形して、その値を返す。


    構文における書式のコードは次のとおりです。

    コード 意味
    %c 文字
    %s 文字列
    %d 10進整数
    %e 浮動小数点数(指数形式)
    %f 浮動小数点数(固定小数点形式)
    %e 浮動小数点数(コンパクト形式)
    %o 8進整数
    %x 16進整数
    %X 16進整数(大文字使用)


    $hour = 5;
    $min = 12;
    $sec = 6;

    $time = sprintf("%02d:%02d:%02d", $hour,$min,$sec);
    print "$time
    \n";

    <実行結果>
    05:12:06




9-4. ディレクトリの読み取り
  • ディレクトリの中身を読み取るための関数として、opendir関数readdir関数closedir関数があります。
  • ファイルをオープンするときに、open関数でファイルハンドルを関連付けますが、それと同じように、ディレクトリをオープンするときには、ディレクトリハンドルを指定して関連付けを行います。
  • opendir関数でディレクトリをオープンする場合は、読み出し専用であることに注意します。open関数のように、ファイルの追加や書き込みなどを行うことはできません。

    関数 構文 意味
    opendir関数 opendir ( ディレクトリハンドル, ディレクトリ ) 「ディレクトリ」で与えられたディレクトリ名をオープンする。
    成功すれば真を返す。
    readdir関数 readdir ( ディレクトリハンドル ) opendirによってオープンされた「ディレクトリハンドル」から、ディレクトリエントリを読む。
    closedir関数 closedir ( ディレクトリハンドル, ディレクトリ ) opendirによってオープンされたディレクトリを閉じる。


    ▼ディレクトリ内のファイルとディレクトリをすべて読み出して表示させる例
    opendir(DIR, "/home/kent/public_html");
    @file = readdir(DIR);
    closedir(DIR);

    foreach (@file) {
        print "$_
    \n";
    }




9-5. ディレクトリの生成と削除
  • ディレクトリを生成したり、削除するための関数として、mkdir関数rmdir関数 があります。

    関数 構文 意味
    mkdir関数 mkdir ( ディレクトリ名, モード ) ディレクトリ「ディレクトリ名」を作成し、そのパーミッションを数値「モード」にする。
    成功すれば 1 を返し、失敗すると 0 を返す($!にエラーコードをセットする)。
    rmdir関数 rmdir ( ディレクトリ名 ) 「ディレクトリ名」に指定したディレクトリが空きならば、これを削除する。
    成功すれば 1 を返し、失敗すると 0 を返す($!にエラーコードをセットする)。
    「ディレクトリ名」を省略すると、$_ が使われる。


    ▼ディレクトリを生成する例
    mkdir ("./lockdir", 0755) || die "ディレクトリ生成失敗 : $!";


    ▼ディレクトリを削除する例
    rmdir ("./lockdir") || die "ディレクトリ削除失敗 : $!";

阅读(427) | 评论(0) | 转发(0) |
0

上一篇:第8章 サブルーチン

下一篇:资料LINK

给主人留下些什么吧!~~