jQuery查找并替换为数组

时间:2012-01-16 14:30:39

标签: jquery arrays

我需要搜索所有街道缩写的输入值,并用适当的后缀替换。这就是我到目前为止所做的:

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

思想?

3 个答案:

答案 0 :(得分:14)

您需要迭代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/

答案 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/

答案 2 :(得分: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(' ');
});
相关问题