【问题标题】:How to split string using line endings as delimiter but keep the line endings in output (Java)如何使用行尾作为分隔符拆分字符串但将行尾保留在输出中(Java)
【发布时间】:2023-04-02 05:35:01
【问题描述】:

我有一个方法可以通过不同的行尾分割字符串

但是,此方法会删除新数组中的行尾。如何将不同的结尾 \r,\n,\r\n 保留为拆分字符串的一部分?

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

期望的结果

String Input = "test line 1\r\ntest line 2"
String[] Output = [0] = test line A\r\n
                  [1] = test line B

【问题讨论】:

  • 使用后视?
  • java.util.StringTokenizer
  • 我有点困惑,因为您当前的输入 已经 有一个换行符,因此这两行会出现在不同的行上。请编辑您的问题并向我们展示文字字符串输出应该是什么。
  • @TimBiegeleisen 好电话。我的意思是将它显示为数组中的元素。我现在修好了。

标签: java regex string split line-endings


【解决方案1】:

您可以尝试在固定宽度的lookbehind 上拆分:

String input = "test line 1\r\ntest line 2";
String[] parts = input.split("(?<=\r\n)");
System.out.println(Arrays.toString(parts));

打印出来:

[test line 1
, test line 2]

【讨论】:

    【解决方案2】:

    查看原始字符串并查看每个标记后面的内容,然后将其重新添加。

    【讨论】:

      【解决方案3】:

      你可以试试这个正则表达式:(?&lt;=\\n)|(?&lt;=\\r)(?!\\n)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 2019-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多