2012-01-16 2 views
6

모든 축약 형에 대한 입력 값을 검색하고 적절한 접미어로 바꿔야합니다. 이것은 내가 지금까지 가지고있는 것이다 :jQuery가 배열을 찾아서 바꾸기

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

생각들?

+2

PHP에서는 작동하지만 JavaScript에서는 작동하지 않습니다. –

+0

이것은 replace의 유효한 javascript 호출이 아닙니다. 그것은 특히 국제화가 가능하지 않습니다. 쉽게 우회하는 클라이언트 측 작업입니다. 각 일치 앞에 공백이오고 단어가 아닌 문자가 이어지는 지 확인해야합니다. –

답변

11

f 어레이를 반복하고 각각을 각각 교체해야합니다.

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/


이 정기적으로 할거야 일이 있으면, 당신은 배열을 저장하려면, 심지어이 세 번째 배열을 만들 수 있습니다 미리 만들어진 정규 표현식.

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 

당신은 항상 반환 문자열로 다시 배열을 돌 수 있었다.

데모 :이 작업을 수행하는http://jsfiddle.net/vRTNt/12/

0

한 가지 방법은 val 문자열을 통해 루프, 그리고 당신이 f 배열의 단어를 볼 경우 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(' '); 
}); 
관련 문제