如何用jquery替换字符串中可能变化的字符

How to replace with jquery a character that can vary in a string

本文关键字:变化 字符 何用 jquery 替换 字符串      更新时间:2023-09-26

基本上,我有一个url需要定期更改才能调用另一个函数,所以例如,我有"index/buscasimples/fiinitidade/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;
})

这个函数更改url并放置所需的"filtro",第一次运行良好。但是当这个过程重复时,url中会有2个"filtro",所以我想替换"filtro"和它旁边的数字,但这个数字可以是1、2或3,正如我所说。有一些原生的jquery函数可以替换一个字符,就像"replace.('filtro/@/')"之类的?很抱歉问了这么长的问题,我已经申请了,我正在努力处理它哈哈谢谢!!

我想你需要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;
})

您可以检查当前url是否已经包含filtro/number,如果是,我们用新的过滤器编号replace,否则,我们将filtro/numero添加到urlredirect中。

你可以使用类似的东西:

$('#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;
})