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\'
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(' ');
});
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
You could always turn the array back into a string for the return if you like.
Demo: http://jsfiddle.net/vRTNt/12/
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/