文本去空格

首尾/全部/多空格合并/去空行

414 次访问

去空白 · 11 种规则可叠加

输入
输出

常见空白字符

· U+0020 半角空格:键盘空格键,最常见

· U+3000 全角空格:中文输入法切换全角时输入;占两字符宽

· U+00A0 NBSP:HTML   不间断空格 · 不会被自动换行

· U+200B 零宽空格:完全不可见但占字符位 · 常用于"防复制"或隐藏水印

· U+2028 行分隔符:行级分隔(JS 字符串可能出错)

· U+FEFF BOM:UTF-8 字节序标记 · 应该被首先剥离

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

💻

代码格式清理

程序员从 PDF、网页或聊天记录复制代码片段时,常混入多余空格、缩进混乱或空行。本工具一键去除首尾空格、合并连续空格并清理多余空行,还原整洁的代码块,避免因格式问题导致编译或运行错误,提升调试效率。

📝

论文排版预处理

研究生从文献管理软件或在线资料库粘贴参考文献时,条目间常有多余空格和空行,导致格式不统一。使用本工具去除首尾空格并合并多空格,使每条参考文献紧凑对齐,方便后续批量导入 Word 或 LaTeX 模板,减少手动调整时间。

📧

邮件模板去杂

市场人员从 CRM 系统导出客户名单时,姓名、邮箱、公司字段经常因复制粘贴产生前后空格或多余换行,导致邮件发送失败或模板渲染错乱。本工具批量清理文本首尾空格和多余空行,确保数据干净可用,避免因格式错误触发邮件服务器退信。

📊

数据录入标准化

财务人员从 Excel 或网页报表复制数据到数据库时,数字前后常带空格导致公式计算错误或查询匹配失败。使用本工具一键去除所有首尾空格并合并多空格,将数据标准化,避免因隐藏字符造成的统计偏差和 VLOOKUP 报错。

📄

文档格式统一

行政人员合并多份 Word 文档时,不同来源的段落首尾空格、空行数量不一致,导致最终文档排版混乱。本工具统一清理所有段落的首尾空格并将连续空行压缩为单行,使合并后的文档段落间距一致,减少手动调整排版的工作量。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (TextFixer)传统方法
数据隐私纯浏览器处理,文本不上传服务器部分功能需上传至服务器处理完全本地,但需人工操作
处理速度毫秒级即时处理秒级(含网络传输时间)数分钟至数小时(取决于文本量)
离线可用完全离线,无需网络需要网络连接完全离线
处理模式首尾/全部/合并多空格/去空行,一键切换功能分散在多个页面,需分别访问手动使用查找替换,步骤繁琐
批量处理支持大文本粘贴,无行数限制有字符数限制(通常 10 万字符内)无限制,但效率极低
操作成本零成本,打开即用免费,但需注册或面对广告需掌握文本编辑软件操作

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
hello worldhello world典型场景:去除首尾空格,保留中间多空格
hello worldhelloworld典型场景:去除所有空格,包括中间
hello worldhello world典型场景:多空格合并为单个,同时去首尾
hello worldhello world边界 case:仅去除空行,对纯空格无影响
边界 case:输入全空格,去首尾后为空
hello world !hello world !边界 case:多空行合并为单个空行
hello world foo barhello world foo bar易错 case:多行文本同时处理空格和空行
a b c da b c d易错 case:制表符不是空格,不会处理

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 把全角空格当成普通空格处理

错误
hello world(全角空格 U+3000)
修复
hello world(半角空格 U+0020)

全角空格(中文排版常见)与半角空格是不同的 Unicode 字符。本工具默认只处理半角空格,全角空格需先转为半角或使用替换功能。

2. 用「全部替换」替代「首尾去空格」导致行内格式丢失

错误
  a  b  c  → 全部替换后变成 abc(单词间空格全没了)
修复
  a  b  c  → 首尾去空格后变成 a  b  c(保留单词间空格)

「全部替换」会移除文本中所有空格,包括单词之间的分隔空格。如果只想去掉开头和结尾的空白,应选择「首尾去空格」模式。

3. 用「合并多空格」处理代码缩进

错误
def foo():\n    return 42(4空格缩进)→ 合并后变成 def foo():\n return 42
修复
代码缩进请保持原样,或使用专门的代码格式化工具

Python 等语言依赖空格缩进表示代码块。合并多空格会破坏缩进层级,导致语法错误。本工具不适合处理有缩进要求的代码文本。

4. 把制表符(Tab)误认为空格

错误
a\tb(Tab 分隔)→ 期望变成 ab,但工具只处理空格不处理 Tab
修复
a\tb → 先用替换功能将 Tab 替换为空格,再执行去空格操作

制表符(U+0009)与空格(U+0020)是不同的控制字符。本工具默认只处理空格字符,Tab 不会被识别为空格。

5. 用「去空行」处理 Markdown 段落分隔

错误
第一段\n\n第二段(两个空行分隔段落)→ 去空行后变成第一段\n第二段
修复
第一段\n\n第二段 → 保留空行,或只去除首尾空行

Markdown 中空行用于分隔段落。去除所有空行会导致段落粘连,破坏文档结构。应只去除多余空行(连续3个以上)而非全部空行。

6. 输入包含零宽空格(U+200B)但期望被移除

错误
hello​world(中间有零宽空格)→ 工具没去掉,显示 hello​world
修复
先用 Unicode 转义工具查看隐藏字符,或使用替换功能手动输入零宽空格替换为空

零宽空格是不可见字符,常见于从网页/PDF 复制的文本。本工具不处理零宽字符,需单独替换或使用专门的字符清理工具。

7. 用「全部替换」处理 CSV 数据中的空格

错误
a, b, c(逗号后有空格)→ 全部替换后变成 a,b,c(逗号前空格也被去掉)
修复
a, b, c → 只替换逗号后的空格:将", "替换为","

CSV 中字段内可能包含合法空格(如姓名 "John Doe")。全部替换会破坏字段内空格。应使用正则或替换功能精确处理。

8. 把换行符(\n)和回车换行(\r\n)混用导致去空行失效

错误
Windows 文本(\r\n)→ 期望去空行,但工具只识别 \n 结尾的空行
修复
先统一换行符(\r\n 转 \n),再执行去空行操作

不同操作系统使用不同换行符。本工具默认处理 \n 结尾的空行,Windows 的 \r\n 空行可能不会被正确识别。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

output = replace(replace(input, '\s+', ' '), '^\s+|\s+$', '')

变量说明

  • input — 原始输入文本字符串
  • output — 处理后的文本字符串
  • \s+ — 匹配一个或多个空白字符的正则
  • ^\s+|\s+$ — 匹配开头或结尾的空白字符

示例

输入文本:' Hello World '(前后各2空格,中间3空格)。第一步:replace(input, '\s+', ' ') → ' Hello World '(中间多空格合并为1个)。第二步:replace(..., '^\s+|\s+$', '') → 'Hello World'(去掉首尾空格)。最终输出:'Hello World'。

适用范围

适用于任意文本字符串,包括中文、英文、数字及混合字符。不适用于需要保留特定格式(如代码缩进、表格对齐)的场景。基于正则表达式标准(PCRE/ECMAScript),通用性强。

原理图

原始文本含多余空格/空行浏览器本地处理JavaScript 正则替换无网络请求清理后文本即时展示处理选项:首尾 / 全部 / 合并 / 去空行用户粘贴或输入文本复制或下载结果全部在浏览器内完成,数据不上传服务器,处理速度与文本长度相关适合敏感文本 / 离线环境 / 大文件处理
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import re

# 示例文本
raw = "  Hello   world!   \n\n  This  is   a   test.  "

# 1. 去除首尾空格
stripped = raw.strip()
print(f"strip: {repr(stripped)}")

# 2. 合并多个连续空格为单个空格
single_space = re.sub(r' +', ' ', stripped)
print(f"single: {repr(single_space)}")

# 3. 去除所有空格(含换行、制表符)
no_space = re.sub(r'\s+', '', raw)
print(f"no_space: {repr(no_space)}")

# 4. 去除空行(连续换行合并为一个换行)
no_blank = re.sub(r'\n\s*\n', '\n', raw).strip()
print(f"no_blank: {repr(no_blank)}")
package main

import (
	"fmt"
	"regexp"
	"strings"
)

func main() {
	raw := "  Hello   world!   \n\n  This  is   a   test.  "

	// 1. 去除首尾空格
	stripped := strings.TrimSpace(raw)
	fmt.Printf("trim: %q\n", stripped)

	// 2. 合并多个连续空格为单个空格
	re := regexp.MustCompile(` +`)
	single := re.ReplaceAllString(stripped, " ")
	fmt.Printf("single: %q\n", single)

	// 3. 去除所有空白字符
	reAll := regexp.MustCompile(`\s+`)
	noSpace := reAll.ReplaceAllString(raw, "")
	fmt.Printf("no_space: %q\n", noSpace)

	// 4. 去除空行
	reBlank := regexp.MustCompile(`\n\s*\n`)
	noBlank := strings.TrimSpace(reBlank.ReplaceAllString(raw, "\n"))
	fmt.Printf("no_blank: %q\n", noBlank)
}
// 示例文本
const raw = "  Hello   world!   \n\n  This  is   a   test.  ";

// 1. 去除首尾空格
const stripped = raw.trim();
console.log(`trim: ${JSON.stringify(stripped)}`);

// 2. 合并多个连续空格为单个空格
const single = stripped.replace(/ +/g, ' ');
console.log(`single: ${JSON.stringify(single)}`);

// 3. 去除所有空白字符(含换行、制表符)
const noSpace = raw.replace(/\s+/g, '');
console.log(`no_space: ${JSON.stringify(noSpace)}`);

// 4. 去除空行(连续换行合并为一个换行)
const noBlank = raw.replace(/\n\s*\n/g, '\n').trim();
console.log(`no_blank: ${JSON.stringify(noBlank)}`);

常见问题

8 个高频疑问

为什么我点了“全部去除”,有些空格还在?
请检查那些“空格”是否真的是空格字符——常见情况有:全角空格(U+3000)在工具中默认不会被“全部去除”处理,需要切换到“首尾去除”或“合并多空格”模式后再试。另外,制表符(Tab)和换行符也不属于普通空格,勾选“去空行”可以处理换行。如果仍不生效,可以把文本粘贴到记事本里查看不可见字符类型。
工具能去掉中文字中间的空格吗?比如“你好 世界”变成“你好世界”?
可以。选择“全部去除”模式会把所有空格(包括中文词组之间的空格)删掉。如果只想保留一个空格而删除多余空格(比如“你好 世界”变成“你好 世界”),请选择“合并多空格”模式。注意:“首尾去除”只删开头和结尾的空格,不会动中间的空格。
我有一段带空行的文章,怎么只去掉空行,不删其他空格?
操作步骤:在工具界面中,先勾选“去空行”选项(通常与空格模式独立),然后选择“无操作”或“仅去空行”模式(具体看界面标签)。这样只删除连续空行(即只有换行符的行),保留正文中的所有空格。如果工具没有“仅去空行”独立选项,可以先选“合并多空格”再勾“去空行”,效果类似。
这个工具和 Word 里的替换空格功能有什么区别?
Word 替换需要手动输入空格字符(可能误按成全角/半角),且一次只能处理一种空格类型。本工具一键批量处理四种情况:首尾空格、全部空格、多空格合并、空行删除,且自动识别半角/全角空格(视模式而定)。另外,本工具纯前端运行,无需安装软件,对 10 万字以内的文本处理速度在 1 秒内。
为什么粘贴进文本框后,点击按钮没反应?
最常见原因是文本量太大(超过工具默认上限,通常 50 万字以上)或包含了特殊 Unicode 字符导致浏览器卡顿。建议先分段处理,每次粘贴不超过 10 万字。另一个可能是浏览器 JavaScript 引擎被禁用(如极端安全设置),可以换个浏览器(Chrome/Edge/Firefox 最新版)重试。如果仍然无反应,刷新页面后重新粘贴。
工具会限制每次处理的字数吗?最大的文本能处理多少?
纯前端实现的处理能力取决于浏览器内存和 CPU,一般 100 万字符以内的文本处理流畅无延迟。超过 200 万字符时,部分浏览器(尤其是手机端)可能出现界面卡顿或“脚本无响应”提示。建议分批处理:把文本分成几段,每段控制在 50 万字以内,处理完再合并。工具本身不设硬性字数上限,但浏览器有内存限制。
我复制出来的文本里有很多零宽空格(看不见的字符),工具能去掉吗?
默认的空格去除模式只处理标准空格(U+0020)、全角空格(U+3000)和制表符(U+0009),不处理零宽空格(U+200B)等不可见控制字符。如果需要去掉零宽空格,可以先用“全部去除”模式处理一遍(它通常不会删掉零宽空格),再手动复制到支持正则替换的工具中搜索 \u200B 替换为空。本工具后续版本可能会加入“清除不可见字符”选项。
为什么我用“合并多空格”后,英文单词之间变成了一个空格,但标点前后有多余空格?
“合并多空格”只将连续两个以上空格压缩为一个,不会智能识别标点前后是否需要空格。例如英文中逗号后通常留一个空格,但工具不会区分。如果标点前后的空格数量不标准(比如“hello , world”),合并后变成“hello , world”仍有一个空格在逗号前。建议先用“全部去除”删掉所有空格,再手动在标点后加一个空格(适合英文排版)。
选择 打开 +新窗口 esc关闭