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

Usage: #tags(tags)
Posted by at 2006-10-09

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

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

  • &jnlp;
  • &jar;
  • &zip;
GetLineText.png

サンプルコード

int count = 0;
StringTokenizer st = new StringTokenizer(textArea.getText(), "\n") ;
while(st.hasMoreTokens()) {
  if(st.nextToken().startsWith("#")) {
    count++;
  }
}
View in GitHub: Java, Kotlin

解説

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


  • String#split
    for(String line: textArea.getText().split("\\n")) {
      if(line.startsWith("#")) {
        count++;
      }
    }
    
  • LineNumberReader
    try(LineNumberReader lnr = new LineNumberReader(new StringReader(textArea.getText()))) {
      String line = null;
      while((line = lnr.readLine()) != null) {
        if(line.startsWith("#")) {
          count++;
        }
      }
    }catch(IOException ioe) {
      ioe.printStackTrace();
    }
    
  • Element#getElementCount
    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++;
        }
      }
    }catch(BadLocationException ble) {
      ble.printStackTrace();
    }
    

コメント