TITLE:JTextAreaから一行ずつ文字列を取得

JTextAreaから一行ずつ文字列を取得して

編集者:Terai Atsuhiro
作成日:2006-10-09
更新日:2023-07-07 (金) 13:58:07

概要

JTextAreaなどのテキストコンポーネントから一行ずつ文字列を取り出してそれを処理します。

#screenshot

サンプルコード

int count = 0;
StringTokenizer st = new StringTokenizer(textArea.getText(), "\n") ;
while(st.hasMoreTokens()) {
  if(st.nextToken().startsWith("#")) {
    count = count + 1;
  }
}
//Document doc = textArea.getDocument();
//Element root = doc.getDefaultRootElement();
//try{
//  for(int i=0;i<root.getElementCount();i++) {
//    Element elem = root.getElement(i);
//    String line = doc.getText(elem.getStartOffset(),
//                              elem.getEndOffset()-elem.getStartOffset());
//    if(line.startsWith("#")) {
//      count = count + 1;
//    }
//  }
//}catch(BadLocationException ble) {
//  ble.printStackTrace();
//  count = -1;
//}
  • &jnlp;
  • &jar;
  • &zip;

解説

上記のサンプルでは、JTextArea#getText() ですべてのテキストを取得し、StringTokenizer を使って行毎に分解しています。

コメントアウトしたコードのようにドキュメントが行を取り出した方が若干速い気*1がするのですが、行数が少ない場合は簡単なStringTokenizerを使用する方法で問題ないと思います。

コメント