我有以下2个字符串,我想用另一个单词替换单词的出现。这是一个例子:
new content:
1 best thing ever
2 [thing i dont want]
3 [thing i dont want] best thing ever
4 // best thing ever
5 best thing ever // best thing ever
在这里,我想用适当的模板替换每个星号。
答案 0 :(得分:2)
你可以使用这个ES6函数,使用replace
回调参数:
function solution (str1, str2) {
var replacements = str1.match(/\{\{.*?\}\}/g);
return str2.replace(/\*/g, match => replacements.shift() || '');
}
// test case
var str1 = 'My name is {{ firstName }} {{ lastName }}';
var str2 = 'Me llamo * *';
// match
var result = solution(str1, str2);
// output
console.log(result);

没有双支撑计数器部分的星号只是被删除。
答案 1 :(得分:1)
您可以使用正则表达式来获取所有变量,并将每个*替换为每个索引处的变量:
var target = 'My name is {{ firstName }} {{ lastName }}';
var translation = 'Me llamo * *';
function translate(from, to) {
var interpolations = from.match(/(\{\{([\w\s]+)\}\})/g);
return to.replace(/\*/g, function(matches) {
return interpolations.shift()
})
}
console.log(translate(target, translation));

答案 2 :(得分:0)
如果两个字符串总是像你的例子那样,那么:
var str1 = 'My name is {{ firstName }} {{ lastName }}'
var str2 = 'Me llamo * *'
var result = solution(str1, str2)
console.log(result)
console.log(result == 'Me llamo {{ firstName }} {{ lastName }}')
function solution(str1, str2){
return str2.substr(0, str2.length-3) + str1.substr('My name is '.length)
}

答案 3 :(得分:0)
您可以使用Array.prototype.replace
功能执行此操作。
var str1 = 'My name is {{ firstName }} {{ lastName }}';
var str2 = 'Me llamo * *';
var result = solution(str1, str2);
console.log(result);
function solution(str1, str2){
str1 = str1.match(/\{\{.*?\}\}/g);
return str2.replace(/\*/g, () => str1.shift());
}
但是,我认为从字符串中删除{{}}
标记会更有用。您可以按照以下方式实现:
function solution(str1, str2){
str1 = str1.match(/\{\{.*?\}\}/g).map(m => m.match(/\{\{\s(.*)\s\}\}/)[1]);
return str2.replace(/\*/g, () => str1.shift());
}
答案 4 :(得分:0)
一个迭代且缩写较少(但可能较慢)的版本,它更能容忍*或{{}}数量不匹配:
var solution = function(s1, s2) {
var myRegexp = /(\{\{.*?\}\})/g;
var match = myRegexp.exec(s1);
while (match != null && s2.indexOf('*')!== -1) {
s2 = s2.replace('*', match[1]);
match = myRegexp.exec(s1);
};
return s2;
};
var str1 = 'My name is {{ firstName }} {{ lastName }}';
var str2 = 'Me llamo * *';
var result = solution(str1, str2);
console.log(result);