我试图在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");
}

当前回答

你不必在字符组中使用双转义字符。

对于所有非空行使用:

String.split("[\r\n]+")

其他回答

也许这样可以:

从split方法的参数中移除双反斜杠:

split = docStr.split("\n");

这应该包括你:

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

实际上只需要考虑两个换行符(UNIX和Windows)。

如果你不想要空行:

String.split("[\\r\\n]+")

保存空行不被压扁使用:

String lines[] = String.split("\\r?\\n", -1);

String lines[] =字符串。split (System.lineSeparator ())