可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I need to search an input's value for all street abbreviations and replace with appropriate suffix. This is what I have so far:
jQuery('#colCenterAddress').val(function(i,val) { var f = ['Rd','St','Ave']; var r = ['Road','Street','Avenue']; return val.replace(f,r); });
Thoughts?
回答1:
You need to iterate the f
Array, and try each replace separately.
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; });
DEMO: http://jsfiddle.net/vRTNt/
If this is something you're going to do on a regular basis, you may want to store the Arrays, and even make a third Array that has the pre-made regular expressions.
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; });
DEMO: http://jsfiddle.net/vRTNt/1/
回答2:
One way to do this, is to loop through the val
string, and if you see a word in the f
array, replace it with its counterpart in the r
array.
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(' '); });
回答3:
var valArray = val.split(" "); for(x = 0; x
You could always turn the array back into a string for the return if you like.
Demo: http://jsfiddle.net/vRTNt/12/