我正在尝试使用正则表达式在JTextArea
拆分文本,以\\n
拆分字符串\\n
但是,这不起作用,我也尝试了\\r\\n|\\r|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");
}
#1楼
String.split(System.getProperty("line.separator"));
这应该是系统独立的
#2楼
package in.javadomain;
public class JavaSplit {
public static void main(String[] args) {
String input = "chennai\nvellore\ncoimbatore\nbangalore\narcot";
System.out.println("Before split:\n");
System.out.println(input);
String[] inputSplitNewLine = input.split("\\n");
System.out.println("\n After split:\n");
for(int i=0; i<inputSplitNewLine.length; i++){
System.out.println(inputSplitNewLine[i]);
}
}
}
#3楼
String#split(String regex)
方法正在使用正则表达式(正则表达式)。 由于Java 8正则表达式支持\\R
,它表示(来自Pattern类的文档 ):
换行匹配器
\\ R任何Unicode换行符序列,等效于\ \ |[\ \\ \ \ \ \ ]
因此我们可以使用它来匹配:
-
\ \\000A
>\\r\\n
对 - \\ u000A- >换行(
\\n
) - \\ u000B- >行列表(不要与
\
字符列表\\t
混淆) - \\ u000C- >换页(
\\f
) - \\ u000D- >回车符(
\\r
) - \\ u0085- >下一行(NEL)
- \\ u2028- >行分隔符
- \\ u2029- >段落分隔符
如您所见, \\r\\n
被放置在正则表达式的开头,这确保了正则表达式将首先尝试匹配该对 ,并且仅当匹配失败时,它才会尝试匹配单个字符行分隔符。
因此,如果要在行分隔符上进行拆分,请使用split("\\\\R")
。
如果您不想从结果数组中删除尾随空字符串""
使用带有负limit
参数(例如split("\\\\R", -1)
split(regex, limit)
split("\\\\R", -1)
。
如果要将一个或多个连续的空行视为单个分隔符,请使用split("\\\\R+")
。
#4楼
String lines[] =String.split( System.lineSeparator())
#5楼
为了防止空行被压扁,请使用:
String lines[] = String.split("\\r?\\n", -1);
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3179342