2012-01-16 9 views
6

Devo cercare il valore di un input per tutte le abbreviazioni di strada e sostituirlo con suffisso appropriato. Questo è quello che ho finora:jQuery trova e sostituisce con array

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

Pensieri?

+2

Che funziona in PHP, ma sfortunatamente non in JavaScript. –

+0

Questa non è una chiamata javascript valida di sostituzione. Non è particolarmente internazionalizzabile. È il lavoro sul lato client, che è facilmente aggirabile. È necessario assicurarsi che ogni partita sia preceduta da spazi bianchi e che sia seguita da un carattere non di parole. –

risposta

11

È necessario iterare l'array f e provare a sostituirlo separatamente.

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/


Se questo è qualcosa che si sta andando a fare su base regolare, si consiglia di conservare i Array, e anche fare una terza Array che ha le espressioni regolari preimpostate.

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

Si può sempre girare l'array in una stringa per il ritorno, se volete.

Demo:http://jsfiddle.net/vRTNt/12/

0

Un modo per fare questo, è quello di ciclo attraverso la stringa val, e se vedete una parola nella matrice f, sostituirlo con la sua controparte nella matrice 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(' '); 
}); 
Problemi correlati