jQuery查找并替换为数组

我需要搜索所有街道缩写的输入值,并用适当的后缀替换。 这是我到目前为止:

jQuery('#colCenterAddress').val(function(i,val) { var f = ['Rd','St','Ave']; var r = ['Road','Street','Avenue']; return val.replace(f,r); }); 

思考?

您需要迭代f数组,并分别尝试每个替换。

 jQuery('#colCenterAddress').val(function(i,val) { var f = ['Rd','St','Ave']; var r = ['Road','Street','Avenue']; $.each(f,function(i,v) { val = val.replace(new RegExp('\\b' + v + '\\b', 'g'),r[i]); }); return val; }); 

演示: http //jsfiddle.net/vRTNt/


如果这是您定期要做的事情,您可能希望存储数组,甚至制作具有预制正则表达式的第三个数组。

 var f = ['Rd','St','Ave']; var r = ['Road','Street','Avenue']; var re = $.map(f, function(v,i) { return new RegExp('\\b' + v + '\\b', 'g'); }); jQuery('#colCenterAddress').val(function(i,val) { $.each(f,function(i,v) { val = val.replace(re[i],r[i]); }); return val; }); 

演示: http //jsfiddle.net/vRTNt/1/

一种方法是循环使用val字符串,如果在f数组中看到一个单词,则将其替换为r数组中的对应单词。

 jQuery('#colCenterAddress').val(function(i,val) { var f = ['Rd','St','Ave']; var r = ['Road','Street','Avenue']; var valArray = val.split(' '); $.each(valArray, function(i,v){ var inF = $.inArray(v, f); if(inF !== -1){ valArray[i] = v.replace(f[inF], r[inF]); } }); return valArray.join(' '); }); 
 var valArray = val.split(" "); for(x = 0; x < valArray.length; x++){ for(y = 0; y < r.length; y ++){ if (valArray[x] == f[y]){ valArray[x] = r[y]; } } } return valArray 

如果愿意,您可以随时将数组转换回字符串以进行返回。

演示: http //jsfiddle.net/vRTNt/12/