返回仅元音大写的字符串

时间:2015-01-19 23:34:20

标签: javascript

我想返回变量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");

4 个答案:

答案 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;
});

请参阅小提琴:http://jsfiddle.net/zo6j89wv/1/

答案 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;
}