【问题标题】:What splitter should I use for every other line?我应该为其他每一行使用什么分离器?
【发布时间】:2013-08-09 08:47:17
【问题描述】:

我有一个文本文件,其中每隔一行包含数据。我想获取每个非空行的内容。鉴于文件的整个文本,我首先尝试使用myText.split("\n\n")。令我惊讶的是,它不起作用。我在 Windows 上工作。

【问题讨论】:

    标签: java string split


    【解决方案1】:

    Windows 使用 CRLF 作为行分隔符。你在LF上分裂。那是行不通的。

    一个安全的方法是使用:

    System.getProperty("line.separator");
    

    在您的操作系统上获得适当的分隔符。

    String newLine = System.getProperty("line.separator");
    myText.split("(?:" + newLine + ")+");
    

    您可能正在读取在不同操作系统上创建的文件。那么上面的方法就不行了。更好的方法是使用带有CRLF 的字符类,正如@Marko 在cmets 中指定的那样:

    myText.split("[\r\n]+");
    

    【讨论】:

    • 仅当文本实际上来自运行 java 的同一操作系统时才有效(通常是这种情况,但并非总是如此),如果文本可以来自任何地方(windows / linux / mac )。最好按\n 分割并修剪每行的\r
    • 或者使用涵盖所有情况的通用表达式?喜欢"[\r\n]+"。甚至可能是换行符的 Unicode 类别。
    • @MarkoTopolnik 在我看来这是最好的解决方案
    • @MarkoTopolnik。这是一个更好的选择。编辑成答案:)
    猜你喜欢
    • 2012-05-15
    • 2011-08-01
    • 1970-01-01
    • 2011-08-21
    • 2021-12-31
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多