Javascript 用数组元素替换字符串
我想用Javascript 用数组元素替换字符串,javascript,ecmascript-6,Javascript,Ecmascript 6,我想用namearray的元素替换字符串,使字符串变成“我的名字是彼得·帕克” 以下是我处理这个问题的方法- let string = 'My name is [~FIRSTNAME] [~LASTNAME]'; let nameArray = ['Peter', 'Parker']; let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]'] 但这并不像预期的那样有效。您正在创建一个字符串模板系统。由于您已经在使用ECAMScript
namearray
的元素替换字符串
,使字符串变成“我的名字是彼得·帕克”
以下是我处理这个问题的方法-
let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
let nameArray = ['Peter', 'Parker'];
let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]']
但这并不像预期的那样有效。您正在创建一个字符串模板系统。由于您已经在使用ECAMScript 6语法,因此可以使用新的内置模板文本
patternToBeReplaced.forEach(function (match, index) {
var output = string.replace(match, nameArray[index]);
});
let[FIRSTNAME,LASTNAME]=['Peter','Parker'];
让string=`我的名字是${FIRSTNAME}${LASTNAME}`;
console.log(字符串)代码>您可以在下一次替换中使用和使用该字符串
let string='我的名字是[~FIRSTNAME][~LASTNAME]';
让nameArray=['Peter','Parker'];
让patterntobereplace=['[~FIRSTNAME]','[~LASTNAME]']
string=patternToBeReplaced.reduce((s,m,i)=>s.replace(m,nameArray[i]),string);
console.log(字符串)代码>类似的东西
let str='我的名字是[~FIRSTNAME][~LASTNAME]';
让nameArray=['Peter','Parker'];
让patterntobereplace=['[~FIRSTNAME]','[~LASTNAME]']
const result=patternToBeReplaced.reduce((str,占位符,i)=>{
返回str.replace(占位符,nameArray[i]);
},str);
控制台日志(结果)代码>
output
是一个局部变量,仅声明它是无用的
replace(String,String)
只会替换第一个匹配的模式
以下是我的解决方案:
patternToBeReplaced.forEach(function (match, index) {
string = string.replace(match, nameArray[index]);
});
第一个解决方案,保留基本代码:
let replaceWithArrayElements = (patterns, replacements, targetString) => {
patterns.forEach((pattern, i) => targetString = targetString.replace(new RegExp(pattern, 'g')));
return targetString;
}
使用映射
:
let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
let nameArray = ['Peter', 'Parker'];
let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]'];
patternToBeReplaced
.forEach((match, i)=>{
string = string
.replace(match, nameArray[i]);
});
使用ES6“模板”字符串:
您可以根据需要使用上述代码您需要更新字符串变量。。。。但是让我们有块级别的范围。。。因此,请使用箭头函数代替Yes,string=string。替换(…
尝试使用reduce
而不是forEach
let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
let replaceMap = new Map();
replaceMap.set('[~FIRSTNAME]', 'Peter');
replaceMap.set('[~LASTNAME]', 'Parker');
replaceMap.forEach((key, value)=>{
string = string.replace(key, value);
});
/*
*Have some ways of getting the first name in "firstName"
*Have some ways of getting the last name in "lastName"
*/
let string = `My name is ${firstName} ${lastName}`;
string.match(/\[~\w+\]/g).forEach((item,index)=>{
string = string.replace(item, nameArray [index])
})