JTextArea到ArrayList <string> </string>的行

时间:2013-12-06 19:51:19

标签: java string swing newline jtextarea

如何将JTextArea中的每一行转换为ArrayList<String>?也就是说,如何检测JTextArea中的换行符?

这是我当前的伪代码实现:

  • 从JTextArea获取文本
  • 浏览JTextArea中的每个字符并将其添加到名为currentWord的字符串中,直到找到换行符// //(这样的东西存在吗?)
  • 当循环检测到换行符时,它会将currentWord添加到arrayList并将currentWord设置为空。
  • 循环结束后,将currrentWord添加到ArrayList。

1.有更简单的方法吗?
2.这种实施方式是否适合规模? (我猜不是)

7 个答案:

答案 0 :(得分:6)

拥抱Strig.split(regex)Arrays.asList功能的力量:

    String s[] = jTextArea1.getText().split("\\r?\\n");
    ArrayList<String>arrList = new ArrayList<>(Arrays.asList(s)) ;
    System.out.println(arrList);

答案 1 :(得分:2)

首先使用JTextArea#getText从文本区域获取所有文本。

完成后,您可以使用String#split,将"\n"作为值。这将在新行返回String分割数组。

如果你想从行中提取每个单词,你可以再次拆分它,大概是在" "上,它会给你每个单词。

然后,您可以使用Arrays.asList将其转换为List(单词或行)和(假设您已经创建了一个实例),使用ArrayList#addAll添加列表中的所有String

如果您只对每个unquie字词感兴趣,可以使用Set过滤掉重复的字词

答案 2 :(得分:1)

JTextArea txArea = new JTextArea();
txArea.setText("line1\nline2\nline3");
String txt = txArea.getText();
String [] arrayOfLines = txt.split("\n");
ArrayList<String> linesAsAL = new ArrayList<String>();
for(String line: arrayOfLines){
    linesAsAL.add(line);
}

或者不是在循环上向ArrayList添加更优雅的行:

List<String> lines = Arrays.asList(txt.split("\n"));

答案 3 :(得分:1)

String line[]=jTextArea1.getText().split("\\n");
List<String> list=Arrays.asList(line);

答案 4 :(得分:0)

或者,经过反思,我可能会使用你原来的算法

private static List<String> toList(JTextArea textArea) {
  List<String> al = new ArrayList<String>(); // return list.
  if (textArea != null) {
    String val = textArea.getText(); // the text.
    StringBuilder sb = new StringBuilder(); // for the current word.
    for (char c : val.toCharArray()) {
      if (Character.isWhitespace(c)) { // ANY white space.
        if (sb.length() > 0) { // is there a current word?
          al.add(sb.toString()); // add it to the list.
          sb.setLength(0); // clear the word.
        }
      } else {
        sb.append(c); // NOT white space, add it to current word.
      }
    }
  }
  return al; // return the list.
}

答案 5 :(得分:0)

final List<String> lines = Arrays.asList(textArea.split("\n"));

答案 6 :(得分:0)

scanner s = new scanner(JTextArea.getText());
while (s.hasNext()) {
   arrayList.add(s.nextLine())
}