【问题标题】:How to remove single line transitions from a string, but leave one for double ones?如何从字符串中删除单行转换,但为双行保留一个?
【发布时间】:2021-11-03 20:59:48
【问题描述】:

我计算字符串中文件的行数。

String testing=newString(Files.readAllBytes(Paths.get(path)),StandardCharsets.UTF_8).replaceAll("\\r\\n{1}", "");

什么正则表达式或类似的东西可以用来去除单行转换,但留下双行?

例如:

文件中的元素如下所示:

A
1


b
;
d

当我这样做时:

String testing = new String(Files.readAllBytes(Paths.get(path)), StandardCharsets.UTF_8).replaceAll("\\r\\n", "");
LinkedList<Character> alphabetList = testing.chars().mapToObj(i -> (char)i).collect(Collectors.toList());

我知道列表包含这样的元素:

A
\\r
\\n
\\r
\\n
1
\\r
\\n
b

我需要删除单个的,并将单个的替换为“”。

【问题讨论】:

  • 这是否意味着如果有 2 个或更多空行需要删除一个?在af123131 之间,预期的字符串显示一个空行,而输入中有两个。
  • 好吧,让我猜猜:.replaceAll("(\\R{2,})\\R|(\\R)\\R", "$1$2") 适合你,不是吗?
  • @WiktorStribiżew 不完全。我会尝试解释当我读取字符串collectors.ToList 我有字符:'A' next '\r' next '\n' then letters again.and在一个地方连续两次 '\r' '\n' '\r' '\n' 和你的方法一切都保留了,但双被删除了。你能告诉我如何制作所有单 \r \n删除,双替换为“”(空白)
  • 我不太明白你想要什么。 This?
  • @WiktorStribiżew 我现在将对其进行编辑以使其更清晰

标签: java regex


【解决方案1】:

试试这个。

public static void main(String[] args) {
    String str =
        "afaf\r\n"
        + "\r\n"
        + "af1\r\n"
        + "\r\n"
        + "\r\n"
        + "23131";
    System.out.println(str.replaceAll("\\r\\n((\\r\\n)+)", "$1"));
}

输出:

afaf
af1

23131

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 2012-05-14
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2016-08-26
    相关资源
    最近更新 更多