2016-11-21 78 views
1

我有2個JavaScript的變量有值替換字符串的一部分值NameAge變量轉換爲message字符串以替換值爲'John'和'14'的**Name****Age**的Javascript中的特殊字符

var newmessage = 'I am John and my age is 14'; 

是否有我可以用來執行此操作的JavaScript函數?

回答

5

使用String#replace方法並從window對象獲得變量(只有當變量在全局上下文中定義時才需要使用其他方法,您需要使用eval()我不喜歡使用的方法)。

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

簡單比普拉納夫回答 – Mahi

+1

如果替換變量的數量是像這裏使用的固定數量一樣,我會選擇這個作爲簡單的答案(抱歉,我沒有在我的帖子中提到,我可以有更多) –

+1

我給你+1如果我從名字中刪除'e',非常感謝你的朋友 –

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

@Mahi我知道,但他說替換文本**姓名**爲約翰,他從來沒有提到有關刪除e – HenryDev