【问题标题】:How would I replace the second instance of a character in the URL? [duplicate]如何替换 URL 中字符的第二个实例? [复制]
【发布时间】:2017-01-03 21:37:44
【问题描述】:

我正在尝试仅替换“&”字符的第二个实例或替换 URL www.website.com/--Inventory&vt=test%20&% 中第一个“&”之后的所有“&”实例20个

到目前为止我一直在使用:

var url = window.location.toString();
window.location = url.replace(/&/, '%26');
window.location.reload(false);

但这会替换所有的“&”字符。任何想法表示赞赏。谢谢!

【问题讨论】:

  • 你想保留第一个,只替换第二个,然后让那里的任何东西都像第一个实例一样保持与“&”相同,还是只希望第一个实例保持一个“&”和其他一切'%26'
  • @ToreanJoel 是的,我认为让第一个实例保持 '&' 和其他所有 '%26' 更多的是我的要求
  • 提供的 url 在我看来无效 我一直认为它应该有一个 ?在任何 & 之前,例如:www.website.com/--Inventory?vt=tes&vt=unit 或 www.website.com/--Inventory?vt=tes%26unit
  • 您几乎肯定想使用encodeURIComponent 方法来执行此操作,而不是手动按摩 URL 中的特殊字符

标签: javascript jquery


【解决方案1】:

您可以通过将(第一个 & 字符的索引)+ 1 作为第二个参数传递给 indexOf 函数来选择 URL 中第二个 & 字符的位置。

indexOf 函数的第二个参数定义了应该从中搜索字符的字符串的索引。

了解更多here

(在这种情况下,搜索从第一个 & 字符的 1 + 索引开始)

var position = url.indexOf("&", url.indexOf("&") + 1);

现在您可以替换position 处的字符,如下所示:

url=url.substr(0, position) + '%26' + url.substr(position + 1);

var url = "www.website.com/--Inventory&vt=test%20&%20unit";

var position = url.indexOf("&", url.indexOf("&") + 1);

url=url.substr(0, position) + '%26' + url.substr(position + 1);

console.log(url)

【讨论】:

    【解决方案2】:

    很脏,但是可以用……

    var url = window.location.toString();
    var explode = url.split("&");
    url = "";
    for(int i=0; i<explode.length; i++) {
        url+=exlode[i];
        if(i!=explode.length-1) {
            if(i==1){
                url+="%26";
            } else {
                url+="&";
            }
        }
    }
    

    【讨论】:

    • 这就是我的老板不时对我说的话
    【解决方案3】:

    String.prototype.replaceAt=function(index, character) {
        return this.substr(0, index) + character + this.substr(index+1, this.length);
    }
    
    var url="www.website.com/--Inventory&vt=test%20&%20unit";
    url=url.split("").reverse().join("");
    var index=url.indexOf("&");
    url=url.replaceAt(index,"62%");
    url=url.split("").reverse().join("");
    console.log(url);

    结果是:

    www.website.com/--Inventory&vt=test%20%26%20unit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2013-08-18
      • 2010-09-13
      • 2014-08-12
      • 2017-12-01
      • 1970-01-01
      相关资源
      最近更新 更多