2012-01-16 13 views
6

Potrzebuję wyszukać wartość wejściową dla wszystkich skrótów ulicznych i zastąpić ją odpowiednim sufiksem. Oto, co mam do tej pory:jQuery znajdź i zamień na tablice

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

Myśli?

+2

Działa to w PHP, ale niestety nie w JavaScript. –

+0

To nie jest poprawna inwokacja javascript zastępowania. To nie jest szczególnie możliwe do internacjonalizacji. Jest to praca po stronie klienta, którą łatwo ominąć. Musisz upewnić się, że każdy mecz jest poprzedzony białymi znakami i następcą nie jest słowo. –

Odpowiedz

11

Musisz powtórzyć macierz f i wypróbować każdą z nich osobno.

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/


Jeśli jest coś, co zamierzamy zrobić w sposób regularny, może chcesz zapisać tablice, a nawet zrobić trzeci układ, który ma gotowych wyrażeń regularnych.

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 

Zawsze możesz zwrócić tablicę z powrotem do łańcucha na powrót, jeśli chcesz.

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

0

Jednym ze sposobów, aby to zrobić, jest do pętli poprzez ciąg val, a jeśli pojawi się słowo w tablicy f, wymień ją ze swoim odpowiednikiem w tablicy 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(' '); 
}); 
Powiązane problemy