如何去除字符串中的多行空行并保留单个换行?
去除多余空行、保留单个换行的实现方法
这个需求太常见啦,不管是处理文本内容还是字符串,核心思路都是把连续2个及以上的换行(包括中间夹着空白字符的空行)替换成单个空行。下面给你几个主流场景的具体实现:
Python 实现
用正则表达式处理最省心,几行代码就能搞定:
import re original_str = """Line one Line two Line three Line Four Line Five""" # 替换连续空行(包括带空白的空行)为单个空行 processed_str = re.sub(r'\n\s*\n', '\n\n', original_str) # 可选:如果要去掉字符串首尾的空行,加这一步 processed_str = processed_str.strip('\n') print(processed_str)
要是你的空行里只有纯换行(没有空格、制表符),正则可以简化成 r'\n{2,}',替换成 '\n\n' 就行。
JavaScript 实现
前端或者Node.js里用replace配合全局正则就能处理:
const originalStr = `Line one Line two Line three Line Four Line Five`; // 全局替换连续空行为单个空行,再去掉首尾可能的空行 const processedStr = originalStr.replace(/\n\s*\n/g, '\n\n').trim('\n'); console.log(processedStr);
别忘了加g修饰符,不然只会替换第一处匹配的连续空行哦。
命令行处理文本文件
如果是要处理本地文本文件,用sed命令超方便:
sed '/^$/N;/^\n$/D' your_file.txt
这个命令会自动把文件里的连续空行合并成单个空行,直接输出处理后的内容。
通用正则逻辑(适用于Java/C#等其他语言)
不管用什么语言,核心正则可以参考这两种:
- 仅匹配纯连续换行:
\n{2,} - 匹配包含空白字符的空行:
\n\s*\n
把匹配到的内容替换为\n\n,再按需去除首尾空行就搞定啦。
内容的提问来源于stack exchange,提问作者Rodrigo




