如何将JTextArea
中的每一行转换为ArrayList<String>
?也就是说,如何检测JTextArea中的换行符?
这是我当前的伪代码实现:
1.有更简单的方法吗?
2.这种实施方式是否适合规模? (我猜不是)
答案 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())
}