如何删除重复出现次数超过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
相关产品推荐
相关产品推荐

