jQuery find and replace with arrays

匿名 (未验证) 提交于 2019-12-03 01:40:02

问题:

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/



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!