如何用jquery替换字符串中可能有所不同的字符

时间:2016-05-14 01:10:27

标签: javascript jquery html replace

基本上我有一个需要动态更改的网址来调用另一个功能,所以例如我有" index / buscasimples / finalidade / 1 / filtro / 1 /",当具体时按下按钮,我需要更换它所在的部分" filtro / 1 /"另一个。问题是这个数字" / 1 /"可能会有所不同,从1到3,所以我可能需要一个if来做这项工作。但我想知道是否有其他方法可以帮助我...

为了更清楚,代码就像这样

  $('#filtro').change(function(e) { 
    e.preventDefault();
    var filtro = $('#filtro option:selected').val();
    var urlAtual = window.location.href; 
    var url = urlAtual.replace('/buscasimples/','/buscafiltrada/');
    url += 'filtro/'+filtro+'/';
    window.location = url;
})

此功能会更改网址并加上" filtro"这是必要的,并且第一次正常工作。但是当重复过程时,那就是2" filtro"在网址中,所以我想替换" filtro"以及它旁边的数字,但正如我所说,这个数字可以是1,2或3。有一些原生的jquery函数可以替换一个字符,无论它们是什么样的#34;替换。(' filtro / @ /')"或者其他的东西?很抱歉,我已经提交了该应用程序并且我正在尝试处理它哈哈谢谢!!

2 个答案:

答案 0 :(得分:3)

我认为您需要indexOf() ..请尝试此代码并阅读代码中的注释

$('#filtro').change(function(e) { 
    e.preventDefault();
    var filtro = $('#filtro option:selected').val();
    var urlAtual = window.location.href; 
    var url = urlAtual.replace('/buscasimples/','/buscafiltrada/');
    // <<<<<<<<< the new code start 
    if(url.indexOf('filtro/') > -1){  // if filtro/ found in the url'
       urlSplit = url.split('filtro/'); // split url to get the url before 'filtro/'
       url = urlsplit[0]+'filtro/'+filtro+'/'; // append new filtro to the first url string
    }else{  // if url doesn't have filtro then append to url
       url += 'filtro/'+filtro+'/'; 
    }
    // <<<<<<<<<<< end of new code
    window.location = url;
})

答案 1 :(得分:1)

您可以检查当前网址是否已包含filtro/number,是这样,我们replace使用 filtro编号,否则,我们会添加filtro/numerourlredirect

您可以使用以下内容:

$('#filtro').change(function(e) { 
var filtro = $('#filtro option:selected').val();
var urlAtual = window.location.href; 
var url = urlAtual.replace('/buscasimples/','/buscafiltrada/');
if (/filtro\/\d+/i.test(url)) {
    url = url.replace(/filtro\/\d+/i, "filtro/"+filtro);
}else{
    url += 'filtro/'+filtro+'/';
}
window.location = url;
})