【问题标题】:Java parse contents of a string into lines, auto-detecting line typeJava将字符串的内容解析为行,自动检测行类型
【发布时间】:2014-09-21 02:08:52
【问题描述】:

我有一串大约一百行,不知道这些行是“\r\n”还是“\n”。

我想解析一次字符串,处理每一行。

This question 几乎回答了我的问题,但没有提到如何处理未知的换行符。

我正在考虑使用上述方法之一,选择“\n”作为分隔符,然后逐行删除任何“\r”字符。

虽然性能确实不是问题,但我想知道是否有更清洁的方法来做到这一点。我还没有找到任何自动处理行分隔符类型的方法。

尝试 #1,根据 @TritonMan 的建议:

Scanner scanner = new Scanner(myString);
String line = scanner.nextLine();
// line contains whole contents of string, not just the first line

如果重要的话,我会在 Android 上运行它。该字符串来自一个 PLS 文件(播放列表),它似乎在任何地方都没有得到很好的定义,所以我不知道它使用什么类型的行分隔符。

作为后备,我将使用这个问题中的代码,但它现在困扰着我如何在没有正则表达式或 String.split() 的情况下处理流:

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

【问题讨论】:

  • 第二个答案不适合你吗?这应该。使用 Scanner 的那个
  • 啊,太好了,谢谢。我会试试的
  • 它不起作用 - 请查看我的编辑
  • Scanner 和 BufferedReader 不关心行尾的类型。他们将匹配他们两个。 See also this answer
  • 谢谢 - 结果(你可能知道)我没有注意到其他代码在传递给我之前删除了这些行。

标签: java newline text-parsing


【解决方案1】:

提示:JDK 是开源的!你可以看看Scanner类是如何实现的。

简而言之:

Scanner in = new Scanner(source);

while(in.hasNextLine())
    String line = in.nextLine();

    //Do something!

将在"\r\n""\n" 情况下存储一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多