我试图在JTextArea中使用正则表达式分割文本,通过\n分割字符串,然而,这并不奏效,我也尝试了\r\n|\r|n和许多其他正则表达式组合。
代码:
public void insertUpdate(DocumentEvent e) {
String split[], docStr = null;
Document textAreaDoc = (Document)e.getDocument();
try {
docStr = textAreaDoc.getText(textAreaDoc.getStartPosition().getOffset(), textAreaDoc.getEndPosition().getOffset());
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
split = docStr.split("\\n");
}
在JDK11中,String类有一个lines()方法:
返回从此字符串中提取的行流,以
行结束符。
此外,文件继续说:
行结束符是以下之一:换行字符"\n"
(U+000A),一个回车字符“\r”(U+000D),或者一个回车
返回后跟换行“\r\n”(U+000D U+000A)。一个
行是0个或多个字符的序列,后跟一个
行结束符,或者它是一个或多个字符的序列
后面跟着字符串的末尾。行不包括行
终结者。
这一个可以简单地做:
Stream<String> stream = str.lines();
然后如果你想要一个数组:
String[] array = str.lines().toArray(String[]::new);
鉴于此方法返回一个流,它为您提供了许多选项,因为它使您能够编写简洁和声明性的可能并行操作的表达式。
在JDK11中,String类有一个lines()方法:
返回从此字符串中提取的行流,以
行结束符。
此外,文件继续说:
行结束符是以下之一:换行字符"\n"
(U+000A),一个回车字符“\r”(U+000D),或者一个回车
返回后跟换行“\r\n”(U+000D U+000A)。一个
行是0个或多个字符的序列,后跟一个
行结束符,或者它是一个或多个字符的序列
后面跟着字符串的末尾。行不包括行
终结者。
这一个可以简单地做:
Stream<String> stream = str.lines();
然后如果你想要一个数组:
String[] array = str.lines().toArray(String[]::new);
鉴于此方法返回一个流,它为您提供了许多选项,因为它使您能够编写简洁和声明性的可能并行操作的表达式。