JS计算空格

问题描述 投票:3回答:4

我必须在字符串中找到空格,这包括使用Javascript的输入,制表符和空格。我有这个代码来查找空格

function countThis() {
    var string = document.getElementById("textt").value;
    var spaceCount = (string.split(" ").length - 1);
    document.getElementById("countRedundants").value = spaceCount;
}

这工作正常,并给我空间的总数。

问题是,如果空格/输入/选项卡彼此相邻,我希望它只计数一次。我无法解决这个问题,并希望得到一些帮助或指出正确的方向。

谢谢,古斯塔夫

javascript string whitespace
4个回答
1
投票

这是一个丑陋的解决方案,没有使用任何正则表达式,性能明智它是最佳的,但它可以更加pythonic。

def countThis(s):
    count = 0
    i = 0
    while i < len(s):
        while i < len(s) and not s[i].isspace():
            i += 1
        if i < len(s):
            count += 1
            i += 1
        while i < len(s) and s[i].isspace():
            i += 1
    return count

print(countThis("str"))
print(countThis("   str   toto"))
print(countThis("Hello, world!"))

3
投票

你可以在你的qazxsw poi中使用正则表达式:

split

1
投票

使用正则表达式来实现这一目标。例如,您可以检查一个或多个选项卡,空格或换行符的匹配数,并使用它们的计数。

正则表达式规则是:qazxsw poi - 意味着一个或多个制表符,空格或换行符块与规则匹配。

对于JavaScript:

var spaceCount = (string.split(/\s+/gi).length - 1);

正则表达式是一种非常有效的方法。或者,您必须通过对象手动迭代,并尝试匹配存在一个或多个空格,制表符或换行符的情况。

考虑一下,您尝试做的是在编译器中使用,以便将特定字符序列识别为特定元素,称为标记。这种做法称为词法分析或标记化。由于存在正则表达式,因此无需手动执行此检查,除非您要执行非常高级或特定的操作。


1
投票

[\t\s\n]+可能是最简单的眼睛,但如果你想要更高效的东西:

var test = "Test   Test        Test\nTest\nTest\n\n";
var spacesCount = test.split(/[\t\s\n]+/g).length - 1;
console.log(spacesCount);
© www.soinside.com 2019 - 2024. All rights reserved.