Thinkers'Studio
JavaとC言語の自習ツール
部分文字列を返す substringの使用例

 String クラスの substringメソッドは、その文字列の部分文字列を返します。
 今回は、substring を使って、ファイル名からサフィックスやプレフィックスを取り出す例を示します。

 substring には、次の2つの形式があります。
substring メソッドの形式 】
String substring( int begin )          beginから文字列の最後までを返す
String substring( int begin, int end ) beginからend-1までの文字列を返す
 "01234567".substring( 2 ) の結果を表示すると "234567" です。
 "01234567".substring( 0, 3 ) の結果を表示すると "012" です。 文字数は end - begin となります。
 なお、全角文字でも取り扱いは同じです。"あいうえお".substring( 1, 4 ) の結果は、"いうえ" です。

substring の使用例 】
 ファイル名が String配列 flst に入っています。 ファイル名から、先頭の3文字または最後のカンマ以降を取り出して表示します。 getPrefix が前から、getSuffix が後ろから取り出すメソッドです。

class UseSubstring {
    //sの先頭からn-1までの部分文字列を返す
    public static String getPrefix( String s, int n ) {
        if( n <= 0 || n > s.length() ) return s;
        return s.substring( 0, n );
    }
    //sの最後の.以降の部分文字列を返す
    public static String getSuffix( String s ) {
        int n = s.lastIndexOf( "." );
        if( n == -1 ) return s;
        return s.substring( n );
    }
    public static void main( String[] args ) {
        String flst[] = { "InsData.java", "UpdData.java", "DelData.java"
                        , "OprData.class", "Dat.0531.txt", "Res.0531.txt" };

        for( int i = 0; i < flst.length; i++ )
            System.out.println( getPrefix(flst[i],3) + "  "
                             +  getSuffix(flst[i]) );
   }
}
(実行結果)
Ins  .java
Upd  .java
Del  .java
Opr  .class
Dat  .txt
Res  .txt

ファイルのプレフィクスやサフィックスを取り出す処理

  • プレフィクスを求める getPrefix メソッドには、ファイル名と先頭からの文字数(ここでは 3)を渡すと ・・
     その部分の文字列が戻されます。文字数指定 n が正しくないときはファイル名をそのまま返します。
  • サフィックスを求める getSuffix メソッドには、ファイル名を渡すと ・・
     最後の "."(コンマ)以降の文字列が戻されます。 カンマが見つからなければ、ファイル名をそのまま返します。
     lastIndexOf は Stringクラスのメソッドで、引数に指定した文字列が最後に現われる位置を返します。
(今回のクイズです)
 上の例で使用した "Dat.0531.txt" の "0531" のように、サフィックスの直前に必ず MMDD の4桁があるものとして、その部分文字列を返すメソッドを書いてみましょう。次の形式とします。
    public static String getMMDD( String s ) 
   (答えは、次回の Java の Tips で ・・・)

前回 クイズはありませんでした)