jQuery find and replace with arrays

后端 未结 3 2144

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\'         


        
相关标签:
3条回答
  • 2020-12-19 07:07

    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(' ');
    });
    
    0 讨论(0)
  • 2020-12-19 07:12
    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/

    0 讨论(0)
  • 2020-12-19 07:16

    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/

    0 讨论(0)
提交回复
热议问题