1

我正在尝试计算变量中“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!">
4

3 回答 3

1

而不是z.substring(x),简单地做z[x]==='a'

子串的结构是

string.substring(from, to)

因此,当您仅传递from参数时,它会在字符之后占用部分that many字符串

IE"hello".substring(3) =="lo"

于 2013-05-07T14:00:11.497 回答
1

我想你想要z.charAt(x),或者z[x]

或者使用正则表达式:

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

该替换过程会生成一个字符串,该字符串由原始中不是“a”的所有内容组成,然后它只获取剩余内容的长度。(原始字符串由 保留.replace()。)

于 2013-05-07T14:00:31.310 回答
1

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

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

但是,还有其他几种简单的方法来计算字符串中的字母,例如

var y = z.split("a").length - 1;
// or
var y = (z.match(/a/g) || []).length;
于 2013-05-07T14:00:32.793 回答