返回仅元音大写的字符串

问题描述 投票:0回答:5

我想返回仅元音大写的变量 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");
javascript
5个回答
8
投票

这与您的方法不同,但您可以这样做:

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("");
}

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/


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

0
投票

字符串是单词字符的集合,因此您可以直接访问字符串的每个部分:

var foo = 'bar';
console.log(foo[0]); // outputs 'b'

因此您可以将其扩展为大写输出:

console.log(foo[0].toUpperCase() // outputs 'B'

-4
投票
const vowelSound = string => {
    let res = string.split("").filter(item => item === 'a' || item === 'i' || item === 'e' || item === 'o' || item === 'u')
    return res.join("")
}
© www.soinside.com 2019 - 2024. All rights reserved.