RegExp或循环有问题



我必须计算一个字母被按了多少次。我写的程序(我只能使用JS),大部分,但我似乎遇到了一个问题。

如果键盘输入为"w ss d",则显示"字母w被按了一次","字母s被按了2次"。字母D根本没有显示。老实说,我看不出有什么问题。

for(index = 0; index< inputList.length; index++) {        
    if(str != null && patt.test(str) && inputList[index].trim().length > 0) {
        var match1 = str.match(new RegExp(inputList[index], "g"));                        
        if(match1 != null){
        output.innerHTML = output.innerHTML + ('<span>Letter ' + inputList[index] + " was pressed " + match1.length + " times</span><br/>");
        str = str.replace(new RegExp(inputList[index], "g"), '');
        }
    }
}
代码

打印完次数后,输入:

index = index + match1.length - 1;

这是因为即使键被按了更多次,您也总是将index增加1,这意味着当您有w s s d时,您正在循环索引0 1 2而不是0 1 3(2被跳过,因为s出现了两次)。

小提琴编辑

这不是一个真正的答案。更像是一个问题。我所做的只是在调试时添加这个,它应该没有任何效果。但它确实如此,而且,一切都正常。

patt.test(str);

小提琴

最新更新