我必须在字符串中找到空格,这包括使用Javascript的输入,制表符和空格。我有这个代码来查找空格
function countThis() {
var string = document.getElementById("textt").value;
var spaceCount = (string.split(" ").length - 1);
document.getElementById("countRedundants").value = spaceCount;
}
这工作正常,并给我空间的总数。
问题是,如果空格/输入/选项卡彼此相邻,我希望它只计数一次。我无法解决这个问题,并希望得到一些帮助或指出正确的方向。
谢谢,古斯塔夫
这是一个丑陋的解决方案,没有使用任何正则表达式,性能明智它是最佳的,但它可以更加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!"))
你可以在你的qazxsw poi中使用正则表达式:
split
使用正则表达式来实现这一目标。例如,您可以检查一个或多个选项卡,空格或换行符的匹配数,并使用它们的计数。
正则表达式规则是:qazxsw poi - 意味着一个或多个制表符,空格或换行符块与规则匹配。
对于JavaScript:
var spaceCount = (string.split(/\s+/gi).length - 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);