You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除重复出现次数超过2次的连续换行符?

连续换行符去重实现方案

需求说明

文本处理时需要对连续换行符做去重:当连续换行符的重复次数超过2次时,仅保留2个连续换行符,参考效果:

输入:"Some text \n\n\nSome text"
输出:"Some text \n\nSome text"


实现方案

方案1:正则替换(最简洁通用)

核心逻辑是匹配3个及以上的连续换行符,统一替换为2个换行符,以下是常见开发语言的实现示例:

  • Python
import re
def deduplicate_newlines(text: str) -> str:
    # 处理Unix格式换行\n
    return re.sub(r'\n{3,}', r'\n\n', text)
    # 兼容Windows格式\r\n可改用下方写法
    # return re.sub(r'(\r\n){3,}', r'\r\n\r\n', text)
  • JavaScript
function deduplicateNewlines(text) {
    return text.replace(/\n{3,}/g, '\n\n');
}
  • Java
import java.util.regex.Pattern;

public class NewlineDeduplicate {
    private static final Pattern NEWLINE_PATTERN = Pattern.compile("\\n{3,}");
    
    public static String deduplicateNewlines(String text) {
        return NEWLINE_PATTERN.matcher(text).replaceAll("\n\n");
    }
}

方案2:手动遍历实现(无正则依赖)

适合不能使用正则的场景,通过计数控制连续换行的输出数量:

def deduplicate_newlines(text: str) -> str:
    result = []
    newline_count = 0
    for char in text:
        if char == '\n':
            newline_count += 1
            if newline_count <= 2:
                result.append(char)
        else:
            newline_count = 0
            result.append(char)
    return ''.join(result)

注意事项

  • 如果文本中混合存在Unix换行\n和Windows换行\r\n,建议先统一换行符格式后再做去重处理,避免匹配遗漏。
  • 该逻辑会恰好保留2个连续换行,不会影响正常的段落空行分隔效果。

内容的提问来源于stack exchange,提问作者Vladyslav Serbulov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:45:03