我正在尝试计算变量中'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!">
答案 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;