我想返回变量newString,只有元音大写。不知道如何继续。尝试使用if / else块,但我的逻辑不正确。
function LetterChanges(str) {
var newArray = [];
for (var i = 0; i < str.length; i++) {
var strCode = str.charCodeAt(i) + 1;
var strLetter = String.fromCharCode(strCode);
newArray.push(strLetter);
var newString = newArray.join("");
}
return newString;
}
LetterChanges("hello");
答案 0 :(得分:7)
这与您的方法不同,但您可以这样做:
function LetterChanges(str) {
return str.toLowerCase().replace(/[aeiou]/g, function(l) {
return l.toUpperCase();
});
}
console.log(LetterChanges("The Quick Brown Fox Jumped Over The Lazy Dog"));
<小时/> 这是一种更接近您的尝试并使用更简单的概念的方法:
function LetterChanges(str) {
var newArray = [];
for (var i = 0; i < str.length; i++) {
var ch = str.charAt(i);
if ('aeiouAEIOU'.indexOf(ch) !== -1) {
newArray.push(ch.toUpperCase());
} else {
newArray.push(ch.toLowerCase());
}
}
return newArray.join("");
}
答案 1 :(得分:3)
拆分,映射,加入。
var vowels = 'aeiou';
var text = 'my random text with inevitable vowels';
var res = text.split('').map(function(c){
return (vowels.indexOf(c) > -1) ? c.toUpperCase() : c;
});
答案 2 :(得分:1)
字符串是单词字符的集合,因此您可以直接访问字符串的每个部分:
var foo = 'bar';
console.log(foo[0]); // outputs 'b'
因此,您可以将此扩展为输出的大写:
console.log(foo[0].toUpperCase() // outputs 'B'
答案 3 :(得分:1)
要在没有正则表达式的情况下执行此操作,可以将字符串设置为小写,然后迭代一次,在每个元音上调用toUpperCase()。
function letterChanges(string){
var vowels = 'aeiou';
var lowerString = string.toLowerCase();
var result = '';
for( var i=0; i<lowerString.length; i++){
if( vowels.indexOf( lowerString[i] ) >= 0 ){ //if lowerString[i] is a vowel
result += lowerString[i].toUpperCase();
} else {
result += lowerString[i]
}
}
return result;
}