Javascript 仅使用最后一个元素替换字符串的数组
我有以下代码:Javascript 仅使用最后一个元素替换字符串的数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有以下代码: $(document).on('click','.submitMessage,.submitStdMessage', function(e){ prevContent=$('textarea').val(); alert(prevContent); variables = { '{nom}' : 'Manuel', '{apl}' : 'García', '{var1}' : 'chi
$(document).on('click','.submitMessage,.submitStdMessage', function(e){
prevContent=$('textarea').val();
alert(prevContent);
variables = {
'{nom}' : 'Manuel',
'{apl}' : 'García',
'{var1}' : 'chips',
'{var2}' : 'deportes y aventura',
'{var3}' : 'informática y tecnología',
'{cst1}' : 'Serrano, 28',
'{cst2}' : 'Plaza del carmen, 32',
'{cst3}' : 'García Luna, 15'
};
$.each(variables, function (key, value) {
newContent = prevContent.replace(key, value);
});
alert(newContent);
});
当传递这样的字符串时:
{nom}{var2}{cst2}{cst1}{cst3}
第一个警报说:
{nom}{var2}{cst2}{cst1}{cst3}
第二个警报说:
{nom}{var2}{cst2}{cst1}加西亚·卢纳,15岁
如果我更改
variables
数组中元素的顺序,它总是替换数组最后一个位置上的变量集。我需要它来替换发送的所有变量。好的prevContent
永不更改。您需要更新它,而不是另一个变量:
// Always declare local variables with var!!!
var prevContent=$('textarea').val();
alert(prevContent);
var variables = {
'{nom}' : 'Manuel',
'{apl}' : 'García',
'{var1}' : 'chips',
'{var2}' : 'deportes y aventura',
'{var3}' : 'informática y tecnología',
'{cst1}' : 'Serrano, 28',
'{cst2}' : 'Plaza del carmen, 32',
'{cst3}' : 'García Luna, 15'
};
$.each(variables, function (key, value) {
prevContent = prevContent.replace(key, value);
});
alert(prevContent);
replace通常与RegEx一起工作(您可以在这里查看更多信息),所以如果您将字符串作为参数传递,它将只替换一个匹配项
你可以使用“mystring.split”(“wordToReplace”).join(“whatToReplaceWith”) 解决了。我7分钟后打勾。非常感谢。这是一个很好的观点——这些搜索模式将被解释为正则表达式。在这种情况下,OP模式都可以正常工作,但如果其中包含类似于
或*
的内容,则会出现意外结果。