user4471957
user4471957

Reputation:

Returning a string with only vowels capitalized

I'd like to return the variable newString with only vowels capitalized. Not sure how to proceed. Tried using an if/else block but my logic wasn't correct.

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

Upvotes: 0

Views: 4705

Answers (4)

JLRishe
JLRishe

Reputation: 101748

This is different from your approach, but you can do this:

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


Here's an approach that's closer to your attempt and uses somewhat simpler concepts:

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

console.log(LetterChanges("The Quick Brown Fox Jumped Over The Lazy Dog"));

Upvotes: 8

essi
essi

Reputation: 57

const vowelSound = string => {
    let res = string.split("").filter(item => item === 'a' || item === 'i' || item === 'e' || item === 'o' || item === 'u')
    return res.join("")
}

Upvotes: -4

Liam Schauerman
Liam Schauerman

Reputation: 841

To do this without regex, you can set the string to lower case, then iterate once over, calling toUpperCase() on each vowel.

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

Upvotes: 1

ptrk
ptrk

Reputation: 1840

Split, map, join.

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

See the fiddle: http://jsfiddle.net/zo6j89wv/1/

Upvotes: 3

Related Questions