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段连续空白:
- Hello和world之间的3个连续空格
- 第一行末尾的回车换行
- test和with之间的制表符
用修改后的代码会统计出3,完全符合你的需求。
内容的提问来源于stack exchange,提问作者ITGuru
相关产品推荐
相关产品推荐

