2016-11-21 16 views

答えて

5

String#replaceメソッドを使用し、windowオブジェクトから変数を取得します(グローバルコンテキストで変数が定義されている場合にのみ使用します。他の方法では使用したくない方法を使用する必要があります)。

var Name = 'John'; 
 
var Age = '14'; 
 
var message = 'I am **Name** and my age is **Age**'; 
 
var newmessage = message.replace(/\*\*([\w\d]+)\*\*/g, function(m, m1) { 
 
    return window[m1]; 
 
}); 
 

 
console.log(newmessage)


それとも、でもそれはグローバルコンテキストで定義されていない簡単に値を取得することができるように値を格納する代わりに、変数のオブジェクトを使用します。

var obj = { 
 
    Name: 'John', 
 
    Age: '14' 
 
}; 
 
var message = 'I am **Name** and my age is **Age**'; 
 
var newmessage = message.replace(/\*\*([\w\d]+)\*\*/g, function(m, m1) { 
 
    return obj[m1]; 
 
}); 
 

 
console.log(newmessage)

+0

。 '_'は何ですか? – Mahi

+0

@Mahi: 'window'オブジェクトからグローバル変数にアクセスすることができます –

+0

@Mahi:' _'は引数です....キャプチャされた値が必要なので、避けることができます。 –

3

シンプルstring.replace()機能このソリューションについてどのように

var Name = 'John'; 
 
var Age = '14'; 
 
var message = 'I am **Name** and my age is **Age**'; 
 
message = message.replace('**Name**' ,Name).replace('**Age**' , Age); 
 
console.log(message)

+1

はpranavの答えよりも簡単です – Mahi

+1

ここで使用されている変数のように変数の数が固定されていれば簡単に答えを選択しました(私の記事ではあまり言及していないのですが残念です) –

+1

私がNameから 'e'を削除した場合、あなたは+1してくれます。 –

0

で試してみてください。 FIRSTこれらのサブストリングが実際に文字列メッセージの一部であるかどうかを確認してください。それが役に立てば幸い!なぜウィンドウオブジェクト

var Name = 'John'; 
 
var Age = '14'; 
 

 
var message = "I am **Name** and my age is **Age**"; 
 
console.log(myFunction(message)); 
 

 
function myFunction(str){ 
 
    var finalMessage = ""; 
 
    if(str.indexOf("**Name**") !== -1){ 
 
    finalMessage = str.replace('**Name**' ,Name); 
 
    } 
 
    if(finalMessage.indexOf("**Age**") !== -1){ 
 
    finalMessage = finalMessage.replace("**Age**" ,Age); 
 
    } 
 
    return finalMessage; 
 
}

+0

それは空の文字列 – Mahi

+0

を返します@マヒ知っていますが、彼はテキストを置き換えると言っています**名前**ジョンのために、彼はe – HenryDev

関連する問題