2014-01-12 71 views
0

这是我现在在做什么:将多个字符串替换为一个语句?

text = text.replace(/{{contact first}}/gi, contact.first) 
    .replace(/{{contact last}}/gi, contact.last) 
    .replace(/{{contact name}}/gi, contact.first + ' ' + contact.last); 

是否有这样做的一种方式:

text = text.replace([ 
    /{{contact first}}/gi, 
    /{{contact last}}/gi, 
    /{{contact name}}/gi 
], [ 
    contact.first, 
    contact.last, 
    contact.first + ' ' + contact.last 
]); 

回答

4
var contact={first:'John',last:'Doe'} 

var text='{{contact first}} blah blah {{contact last}} blah blah blah {{contact name}} blahblah'; 

text= text.replace(/{{contact (first|last|name)}}/gi, function(a, b){ 
    return contact[b]|| contact.first+' '+contact.last; 
}); 

text; 

/* returned value: (String) 
John blah blah Doe blah blah blah John Doe blahblah 
*/ 
+0

不错,我放弃了这个权利,它缩短了我的代码相当多。 'Chrome 31.0.1650(Mac OS X 10.9.1):执行41/41 SUCCESS(0.575秒/ 0.021秒)' –

3

那不是在Javascript支持,但你也许可以用String#replace这样的:

text = text.replace(/{{contact (first|last|name)}}/gi, function($0, $1) { 
    if ($1 == "last") 
     return contact.last; 
    else 
     return contact.first; 
}); 
相关问题