RegExp或循环有问题

时间:2014-03-21 07:50:12

标签: javascript regex

我必须计算一封信被按下的次数。我编写了程序(我只使用JS),其中大部分都是,但我似乎遇到了问题。

如果键盘的输入是“w s s d”,则表示“一次按下字母w”和“按下字母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"), '');
        }
    }
}

这是小提琴:code

2 个答案:

答案 0 :(得分:1)

打印次数后,请输入:

index = index + match1.length - 1;

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

fiddle edited

答案 1 :(得分:1)

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

patt.test(str);

FIDDLE