2016-11-04 12 views
1

序文 - 宿題が割り当てられていません。forループを使用して、文字列内の特定の文字を数値に置き換えて新しい文字列に出力します。

ゴール - 現在の文字列で、e=3a=4i=1o=0を交換し、新しい文字列で返し

内訳私が試してみました

物事parseINT

置き換え、replace()の変動ありメソッド - 私はすべての4文字を置き換えることができるregExを書く必要がありますか?これまでのところ、私は一度に1つしか得ることができません。

var input = "apples are awesome"; 
var output = input.replace("a","4"); 
4pples 4re 4wesome 

また、forループを試して、文字列をarraryに分割しましたが、まだ失われています。

var input = "apples are awesome".split(); 
var output = ""; 

for(var i =0; i < input.length: i++) { 
if(input[i] === a||e||i||o) { 

あなたのお手伝いをお待ちしております。正規表現パターン、および置換機能付き

答えて

3

使用String.protoype.replace()は:

var input = "apples are awesome"; 
 
var lettersMap = { a: 4, e: 3, i: 1, o: 0 }; 
 

 
var output = input.replace(/[aeio]/gi, function(letter) { // find all selected letters in the string and ignore case 
 
    return lettersMap[letter.toLowerCase()]; // change all found letters to lower case and get their value from the map 
 
}); 
 

 
console.log(output);

0

ただ、ここで提供される、すでに素晴らしい答えに詳細情報を追加するために、アレイにあなたの文字列を分割すべきではなく、配列を処理しますが、これは過剰な処理であり、エラーが発生しやすくなります。以前提案されたように、RegExはより良いアプローチです。これは動作します

input.replace(/a/g, 4) 

/ /は、「」/a/それらの間が一致するテキスト、そして最後に「G」/a/g手段「貪欲」のマッチングで、あなたの正規表現、文字です言い換えれば、「文字列内の文字を置き換えて、最初の文字だけで止まらない」という意味です。 「最初のものだけを止める」はレイジーマッチングと呼ばれます。この両方のRegExフラグの詳細については、http://javascript.info/tutorial/greedy-and-lazyを参照してください。 regEx'ersていない私のような人々のための

0

[OK]を..ここで

はjavascriptのバージョン..です

var replace = { a: 4, e: 3, i: 1, o: 0 }; 
 
var input = "apples are awesome"; 
 

 
var txt = input.split('').reduce(function (a,b) { 
 
    var rep = replace[b]; 
 
    return a + (rep !== undefined ? rep : b); 
 
},''); 
 

 
console.log(txt);

0

これは、それを行うための一つの方法です最高ではありません。

var input = "apples are awesome"; 
 
var output = input.replace(/a/g,'4').replace(/e/g,'3').replace(/i/,"1").replace(/o/,'0'); 
 
console.log(output);

0

ます。また、マップ()関数を使用することができます

var input = "apples are awesome"; 
 
var output = input.split("").map(x => { 
 
    switch (x) { 
 
     case "a": 
 
      return 4; 
 
     case "e": 
 
      return 3; 
 
     case "i": 
 
      return 1; 
 
     case "o": 
 
      return 0; 
 
     default : 
 
      return x; 
 
    } 
 
}).join(""); 
 
console.log(output)

+0

ただ、ノート::スニペット内部置き、これを、あなたは何をする必要はありませんあなたのスニペットを実行して答えを見ることができるので、コメントを入力してください。 – Keith

+1

@Keithありがとう、私はこの機能を知らなかった。だから私はちょうどこの方法で編集しました。そしてそれはkoolを動作させる!! –

関連する問題