下面的一些javascript代碼應該檢查它是否是這些字母之一。但是,當我輸入「Hallo」時,例如它也計數'H','L','LJavascript或者等於
woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u'
我做錯了什麼?
下面的一些javascript代碼應該檢查它是否是這些字母之一。但是,當我輸入「Hallo」時,例如它也計數'H','L','LJavascript或者等於
woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u'
我做錯了什麼?
(woord.charAt(i) == 'a') || 'e' || 'i' || 'o' || 'u'
// evaluates to true or 'e'
看起來你正在嘗試寫代碼,就像你會寫一個句子一樣,在這種情況下,這個句子不能很好地翻譯。以上代碼顯示了該表達式真正發生的情況。
您需要逐個比較字符與每個字符串或編寫正則表達式。正則表達式是更緊湊,看起來像:
/[aeiou]/.test(word.charAt(i))
用這個代替
var str = "My string";
var chr = "";
var nVowels = 0;
for (pos = 0; pos < str.length; pos++){
chr = str.charAt(pos).toLowerCase();
if (chr == "a" || chr == "e" || chr == "i" || chr == "o" || chr == "u")
nVowels++;
}
親愛的上帝......這麼多比較,你可以用toLowerCase()來避免大小寫比較。即使一個開關盒結構看起來更乾淨。 – TheZ
感謝您的快速回答。我忘了在||之後加上'chr ==' – user1825015
嘗試使用不同的方法解決問題
var c = woord.charAt(i);
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
vowels++;
}
外殼問題,使用toLowerCase() – TheZ
謝謝,試過這個。它確實有效,我的代碼縮短了很多。 Thanks mate – user1825015
@ user1825015確保你使用'var c = woord.charAt(i).toLowerCase();'或者你不會匹配'A','E','I','O','U '如「HELLO」 – TheZ
基本上你應該分別檢查每個選項但這很醜陋,表現不佳。我寧願創建一個接受字符的數組,並檢查該數組中當前字符的索引。
var vowels = new Array('a', 'e', 'i', 'o');
var word = 'hello';
var vowelCount = 0;
for(var x=0; x < word.length; x++){
var ch = word.charAt(x).toLowerCase();
if (vowels.indexOf(ch) > -1)
vowelCount++;
}
感謝您的快速回答。由於我對編程非常陌生,因此無法使用我們的代碼。不過,我確實瞭解了一點。 – user1825015
@ user1825015越快學習正則表達式越好,字符串解析將是一個相當大的挑戰,直到你做:) – TheZ
你剛剛開始編程的第一年。希望我能快速學會這個'正則表達式'。因爲它使代碼縮短了很多。 – user1825015