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

JavaScript统计空白字符求助:连续空白需仅计一次

解决连续空白字符仅计一次的统计需求

嘿古斯塔夫,我明白你的需求啦——你想统计字符串里的空白字符(包括空格、回车、制表符),但连续的空白只算一次,而不是每个单独计数对吧?你的原代码只能统计单个空格的数量,而且连续空格会多算,还没覆盖回车和制表符,我来帮你调整一下。

问题分析

你的原代码用string.split(" ").length - 1来计数,这个方法有两个明显局限:

  • 只能识别单个空格,无法匹配回车(\n)、制表符(\t)这类空白字符
  • 连续空格会分割出多个空字符串,导致统计结果比实际的空白段数多

解决方案:用正则表达式匹配连续空白

我们可以用正则表达式/\s+/g来匹配一个或多个连续的空白字符,其中:

  • \s:匹配任何空白字符(空格、回车、换行、制表符等)
  • +:表示匹配前面的字符至少一次(也就是连续的空白片段)
  • g:全局匹配,找到所有符合条件的片段

然后通过match()方法获取所有匹配的片段,片段的数量就是我们要的统计数。

修改后的代码

function countThis() {
  var string = document.getElementById("textt").value;
  // 匹配所有连续的空白字符,返回匹配结果数组(无匹配则返回null)
  var whitespaceMatches = string.match(/\s+/g);
  // 有匹配结果则取数组长度,否则统计数为0
  var spaceCount = whitespaceMatches ? whitespaceMatches.length : 0;
  document.getElementById("countRedundants").value = spaceCount;
}

测试示例

比如输入下面的文本:

Hello   world!
This is a test	with tab.

这里有3段连续空白:

  1. Hello和world之间的3个连续空格
  2. 第一行末尾的回车换行
  3. test和with之间的制表符

用修改后的代码会统计出3,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:45:06