2012-01-16 38 views
6

Tôi cần phải tìm kiếm giá trị của một đầu vào cho tất cả các chữ viết tắt của đường phố và thay thế bằng hậu tố thích hợp. Đây là những gì tôi có cho đến thời điểm này:jQuery tìm và thay thế bằng các mảng

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

Suy nghĩ?

+2

Hoạt động bằng PHP, nhưng tiếc là không có trong JavaScript. –

+0

Đó không phải là lời gọi javascript hợp lệ để thay thế. Nó không đặc biệt quốc tế. Đó là công việc phụ của khách hàng, dễ bị phá vỡ. Bạn cần phải đảm bảo rằng mỗi trận đấu được đặt trước bởi khoảng trắng và thành công bởi một ký tự không phải từ. –

Trả lời

11

Bạn cần lặp lại mảng f và thử từng thay thế riêng biệt.

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/


Nếu đây là một cái gì đó bạn sẽ phải làm một cách thường xuyên, bạn có thể muốn để lưu trữ các Mảng, và thậm chí tạo ra một mảng thứ ba mà có các biểu thức chính quy được tạo sẵn.

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 

Bạn luôn có thể biến mảng lại thành một chuỗi cho sự trở lại nếu bạn muốn.

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

0

Một cách để làm điều này, là để lặp qua val chuỗi, và nếu bạn nhìn thấy một từ trong mảng f, thay thế nó với đối tác của mình trong mảng 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(' '); 
}); 
Các vấn đề liên quan