2016-11-21 45 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