空白与文本清理器,免费

通过移除多余空格、制表符和空行来清理杂乱文本。

您的数据不会离开您的设备

使用方法

  1. 将您的文本粘贴到输入区。
  2. 选择所需的清理选项(默认全部勾选)。
  3. 点击「清理文本」以处理。
  4. 复制或下载清理后的结果。

常见问题

哪些字符算作空白?

空格、制表符、不换行空格和其他 Unicode 空白字符。换行符由「空行」和「合并换行」选项单独处理。

此工具会改变我的内容吗?

不会。它只移除或合并空白字符。您的文字、标点和其他内容保持不变。

可以用它处理代码吗?

可以,但请谨慎 · 移除行首空白会破坏代码缩进。使用单独的复选框精确控制要清理的内容。

「空白符」的真实含义

空白字符是在文本渲染时产生空白而非可见字形的字符,用于分隔单词、缩进行和换行段落。Unicode字符数据库将正式的White_Space属性分配给恰好25个码位。常见的成员(空格、制表符、换行符、回车符)涵盖了您粘贴时遇到的大多数情况,但完整列表还包括不换行空格(U+00A0)、窄不换行空格(U+202F)、U+2000-U+200A范围内的11个排版空格、行分隔符和段落分隔符(U+2028、U+2029)、中等数学空格(U+205F),以及CJK标点后使用的全角表意空格(U+3000)。

另一组字符看起来不可见,但不被Unicode归类为空白符:字节序标记(U+FEFF)、零宽空格(U+200B)、零宽连接符和零宽不连接符(U+200D、U+200C)、单词连接符(U+2060)和软连字符(U+00AD)。这些是格式控制字符,而非空格,大多数「我清理了文本但还是有问题」的反馈都源于其中之一。

此工具各选项的功能

所有六个选项都是独立的开关(取消勾选您想跳过的任何选项),每个选项仅对您粘贴的文本运行。不会上传任何内容;清理通过JavaScript正则表达式在浏览器中本地进行。

适合使用的场景

常见陷阱

简要技术背景

此工具完全在浏览器中使用JavaScript内置的正则表达式引擎运行。现代引擎(大约自2015年起的所有常青浏览器)中的String.prototype.trim()会去除不换行空格和字节序标记,因为ECMAScript规范将其修剪集定义为WhiteSpaceLineTerminator产生式的并集,该列表涵盖制表符、普通空格、NBSP、BOM、排版空格以及CR/LF/LS/PS换行符。它只排除一个Unicode空白字符:U+0085(NEL),这是继承自EBCDIC的奇特字符,几乎不出现在现代文本中。

对于非常大的输入,瓶颈很少在正则表达式处理上,而在于将结果写回文本区域并重新渲染DOM。现代笔记本电脑上通常可以轻松处理几兆字节以内的输入;超出此范围,命令行工具(trsedawk或简短的Python脚本)通常更快。

更多问题

普通空格和不换行空格有什么区别?

它们的渲染宽度相同,但不换行空格(NBSP,U+00A0)告诉渲染器不要在该处换行。Word、Google Docs和许多CMS在称谓与姓名之间(Mr. Smith)、数字与单位之间(10 km)或货币符号前后($ 5)插入它。它是粘贴文本中最常见的「奇怪」字符,也是为什么两个单词之间看起来一样的间隔有时无法被针对普通空格编写的正则表达式捕获。

这会删除零宽字符或字节序标记吗?

JavaScript的空白符处理通常能捕获字节序标记(U+FEFF)。它不能捕获零宽空格(U+200B)、零宽连接符(U+200D)、零宽不连接符(U+200C)、单词连接符(U+2060)或软连字符(U+00AD),Unicode不将这些归类为空白符,因此它们在空白符处理后仍然存在,这是有意设计的。如果您怀疑文本中存在这些字符,需要使用不可见字符检查器。

为什么空行和连续换行是两个独立的选项?

「删除空行」会删除所有空行,结果是没有段落分隔的连续文本块。「将多个换行折叠为一个」在段落之间保留单个换行,只删除多余的。如果您希望输出中的段落可读,请关闭第一个选项并使用第二个。

是否有长度限制?

没有硬性限制,该工具可以轻松处理现代笔记本电脑上数万到数百万字符范围内的文本。限制来自浏览器的文本区域性能:非常大的粘贴操作在打字或复制时会开始卡顿,而不是在清理步骤本身。

有任何内容会发送到服务器吗?

不会。文本永远不会离开您的浏览器。清理在JavaScript中本地运行,结果写回同一页面上的文本区域,页面加载后可离线使用。这同样适用于Absolutool上的每一个工具。

相关工具

大小写转换器 免费在线单词和字符计数器 行排序,免费