使用for()找到的子字符串的Javascript警报总和

时间:2013-05-07 13:58:40

标签: javascript html for-loop substring

我正在尝试计算变量中'a'字母的数量,而某些东西不起作用:

js代码是:

function verChars() {
    var z = document.getElementById("num").value;
    var y = 0;
    var x = 0;

    for (x = 0; x < z.length; x++) {
        if (z.substring(x) === "a") {
            y++;
        }
    }

    if (y === 0) {
        alert("The string has no 'a' char.");   
    } else if (y === 1) {
        alert("The string has a single 'a' char."); 
    } else {
        alert("The string has "+ y +" 'a' chars."); 
    }
}

HTML代码是:

<input type="text" id="num" value="Some text...">
<input type="button" onClick="verChars();" value="Test!">

3 个答案:

答案 0 :(得分:1)

而不是z.substring(x),只需执行z[x]==='a'

即可

子串的结构是

string.substring(from, to)

所以当你只传递from参数时,它会占用that many个字符之后的部分字符串

即。 "hello".substring(3) =="lo"

答案 1 :(得分:1)

我认为您需要z.charAt(x)z[x]

或者使用正则表达式:

y = z.replace(/[^a]/g, '').length;

该替换过程会产生一个字符串,其中包含原始内容中为“a”的所有内容,然后它只会抓住剩下的内容的长度。 (原始字符串由.replace()保持不变。)

答案 2 :(得分:1)

你使用错误的方法。而不是.substring()使用.charAt()

if (z.charAt(x) === "a") { ... }

但是,还有其他一些简短的方法来计算字符串中的字母,例如

var y = z.split("a").length - 1;
// or
var y = (z.match(/a/g) || []).length;