2017-02-09 7 views
0

私はフリーコードキャンプでこの課題に取り組んでいます。何らかの理由で私は理解できないようですが、私は正しい出力。私のデバッグログは予想どおりに発生するようですが、何か不足しているようです。私はstring.replace()を匿名関数で使用していましたが、うまくいきました。この場合、私は期待通りに文字列に実際に一致するものを置き換えているようには見えませんが、それはregexをマッチに使うことと関係があると思います。マルチリターンのRegEx( 'g')文字列置換+ Javascriptでの置換

私はこれを行う方法を理解できません。どんな助けもありがとう。

コード:

function convertHTML(str) { 
 
    var re = new RegExp('[$\"\'\<\>&]', 'g'); 
 
    str.replace(re, function (match) { 
 
    console.log("match"); 
 
    console.log(match); 
 
    switch (match) { 
 
     case "&": 
 
     return "&amp;"; 
 
     case "$": 
 
     return "&dollar;"; 
 
     case '"': 
 
     return "&quot;"; 
 
     case "'": 
 
     return "&apos;"; 
 
     case "<": 
 
     return "&lt;"; 
 
     case ">": 
 
     return "&gt;"; 
 
    } 
 
    console.log("oops"); 
 
    }); 
 
    console.log(str); 
 
    return str; 
 
} 
 

 
convertHTML("Dolce & Gabbana"); 
 
convertHTML("Hamburgers < Pizza < Tacos"); 
 
convertHTML("Sixty > twelve"); 
 
convertHTML('Stuff in "quotation marks"'); 
 
convertHTML("Shindler's List"); 
 
convertHTML("<>");

+1

あなたは 'replace'が* in-place *ではないことを忘れていますので、変更してください: 'str = str.replace(re、function(match){' –

答えて

1

String.prototype.replace()は、それが上と呼ばれ文字列オブジェクトを変更しません。単に新しい文字列を返します。

... 
// to change/overwrite the initial string 
str = str.replace(re, function (match) { 
... 
});