做一個CoderByte挑戰:爲什麼不.toUpperCase()大寫str [i]?
使用JavaScript語言,具備的功能LetterChanges(STR) 採取傳遞str參數,並使用以下 算法進行修改。將字符串中的每個字母替換爲字母后的字母 (即c變成d,z變成a)。然後 用這個新字符串(a,e,i,o,u)中的每個元音大寫,最後 返回這個修改過的字符串。
我的解決方案:
function LetterChanges(str) {
var alphabet = "abcdefghijklmnopqrstuvwxyza",
vowels = "aiueo",
newstr = '';
for (var i = 0; i < str.length; i++) {
if (alphabet.indexOf(str[i]) != -1) {
newstr += alphabet[alphabet.indexOf(str[i]) + 1];
} else {
newstr += str[i];
}
}
for (var i = 0; i < vowels.length; i++) {
for (var j = 0; j < newstr.length; j++) {
//toUppercase the vowel in the newstring once found
if (newstr[j] == vowels[i]) {
newstr[j] = newstr[j].toUpperCase();
}
}
}
return newstr;
}
show(LetterChanges("fun times"));
show(LetterChanges("hello*3"));
的toUpperCase()
不利用我想要的元音。這似乎是正確的。我甚至已經試過這樣的事情:
if (newstr[j] == vowels[i]) {
var toCap = newstr[j].toString();
newstr[j] = toCap.toUpperCase();
}
如果你想更好的解決方案,那麼請回答toUpperCase()
部分,然後推薦另一種解決方案。
對於元音大寫部分,您可以使用正則表達式並在字符串上調用'newstr = newstr.replace()',如'.replace(/ [aeiou] +/g,function(match){返回match.toUpperCase(); });' – Ian
@你應該提供這個答案,因爲它解決了這個問題。 –
這似乎是挑戰性的文字是故意設置用戶的失敗。 – Esailija