做一个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