用新行分割Java字符串

懵懂的女人 提交于 2020-02-29 10:11:07

我正在尝试使用正则表达式在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换行符序列,等效于\ \ |[\ \\ \ \…\
\
]

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

如您所见, \\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);
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!