2013-05-07 48 views
1

我試圖計算一個變量的「A」字母量,有什麼不工作:的JavaScript字符串的警報總和與發現()

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!"> 

回答

1

,而不是z.substring(x),根本就z[x]==='a'

子的

結構

string.substring(from, to) 

所以當你只是傳遞from的說法,它需要字符串的一部分之後that many字符

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

+0

真棒解釋!謝謝! – MoeSzislak 2013-05-07 14:05:37

1

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

或使用正則表達式:

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

這在原來是由所有的字符串替換過程的結果是不是一個「A」,然後它只是抓住後所剩的長度。 (原始字符串保留完整.replace()。)

1

您使用錯誤的方法。而不是.substring()使用.charAt()

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

然而,還有其他一些簡短的方法來計算字符串中的字母,例如,

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

整潔!完美工作!謝謝你們倆! 但爲什麼.substring不起作用? – MoeSzislak 2013-05-07 14:04:14

+0

因爲['.substring()'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring)*返回一個字符串的**子集**索引和另一個,或者通過字符串*的結尾,而不是某個字符。 – VisioN 2013-05-07 14:05:18