按新行拆分 Java 字符串

2022-08-31 04:31:59

我正在尝试使用正则表达式拆分文本以拆分字符串 但是,这不起作用,我也尝试了和许多其他正则表达式的组合。法典: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");
}

答案 1

这应该涵盖您:

String lines[] = string.split("\\r?\\n");

您只需要担心两个换行符(UNIX和Windows)。


答案 2

String#split(String regex) 方法使用 regex(正则表达式)。由于 Java 8 正则表达式支持哪个表示(来自 Pattern 类的文档):\R

换行符
\R 任何 Unicode 换行符序列都等效于\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]

因此,我们可以使用它来匹配:

如您所见,它被放置在正则表达式的开头,这确保了正则表达式将首先尝试匹配此,并且仅当该匹配失败时,它才会尝试匹配单字符行分隔符。\r\n


因此,如果要在行分隔符上拆分,请使用.split("\\R")

如果您不想从生成的数组中删除尾随的空字符串“”,请使用负参数,如.split(regex, limit)limitsplit("\\R", -1)

如果要将一个或多个连续空行视为单个分隔符,请使用 。split("\\R+")