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

当前回答

在所有给定解决方案的基础上尝试失败后。我用一些特殊的词替换\n,然后拆分。对我来说,下面的方法很管用:

article = "Alice phoned\n bob.";
article = article.replace("\\n", " NEWLINE ");
String sen [] = article.split(" NEWLINE ");

我无法复制问题中给出的例子。但是,我想这个逻辑是可以应用的。

其他回答

也许这样可以:

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

split = docStr.split("\n");
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]);
        }
    }

}

有三种不同的惯例(可以说它们是事实上的标准)来设置和显示换行符:

回车+换行 换行 回车

在一些文本编辑器中,可以将其中一个替换为另一个:

最简单的方法是归一化到换行,然后拆分。

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

保存空行不被压扁使用:

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

这应该包括你:

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

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