Javaサンプルコード辞典

BreakIterator - テキストを単語毎に分割する

テキストを単語毎に分割するサンプルコードです。テキストの分割には、「java.text.BreakIterator」クラスを使用します。

「BreakIterator」はテキスト中の単語や行、文などの境界位置を発見するためのメソッドを提供します。単語の境界を発見する場合は、静的メソッドのgetWordInstance()を呼び出して取得できるインスタンスを使用します。例えば「私は山田太郎です。」は「私」、「は」、「山田太郎」、「です」と「。」を単語の境界として認識します。ところが「わたしはやまだたろうです。」とすると、境界は「わたしはやまだたろうです」と「。」とになります。また、ロケールを指定してインスタンスを取得することによって、英語など他の言語の場合でも同様の処理が可能です。
import java.text.BreakIterator;

//コマンドライン引数で指定された文字列を単語毎に分割する
//コマンドライン引数:[分割する対象の文字列]
public class WordDivide {

      public static void main(String[] args) {
            
            System.out.println("--処理開始--");
            
            //コマンドライン引数が入力されているかチェックを行う
            if(args.length == 0)
            {
                  System.out.println("コマンドライン引数を指定してください");
                  return;
            }            
            
            //単語毎の分割に使用するBreakIteratorのインスタンスを取得する
            BreakIterator bit = BreakIterator.getWordInstance();
            
            //BreakIteratorに分割対象の文字列を設定する
            bit.setText(args[0]);            
            
            //最初の区切り位置を取得する
            int startP = bit.first();
            
            //startPから始まる単語の次の単語の開始位置を格納する変数
            int endP = 0;            
            
            //next()で次の単語の区切り位置を取得する
            //next()の結果がBreakIterator.DONEと一致したら文字列の
            //終端と判断してループを抜ける
            while( (endP = bit.next()) != BreakIterator.DONE)
            {
                  //一つ前の単語の開始位置と現在の単語の開始位置の間の
                  //文字列を切り取って標準出力に表示する
                  System.out.println(args[0].substring(startP,endP));
                  
                  //現在の単語の開始位置を一つ前の単語の
                  //開始位置として設定する
                  startP = endP;
            }
            
            System.out.println("--処理終了--");
      }
}

(2007年11月3日)  

 ちょっと一休み. Javaキーワード並び替えゲーム

画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。 ユーザ登録をしてログインするとランキングに参加できます。
Flex Tips

DWRでリッチなWebページを作る!

Java Tips  java.io 編

Java Tips  java.lang 編