如何替换/删除包含该子字符串的字符串的子字符串

how to replace/ remove a substring if a string contains that substing

我正在编写一个函数来检测当前 URL 是否包含某个子字符串。如果包含,那么我想删除它。

例如,

localhost/4000?ab=2&item=google

localhost/4000?ab=2&item=google123

localhost/4000?ab=2&item=google1233&haha=有用

我的想法如下....但有点卡在过程中

function changeUrl(item) {

    var currentUrl = window.location.href; 
        if(currentUrl.includes('&item=') ){
        .....
        .....
        return currentUrl 

    }else return; 
}

我不会尝试将其作为字符串进行操作。 JavaSccript 有一个非常好的操作 URL 的工具,你不妨使用它:

str = 'http://localhost/4000?ab=2&item=google1233&haha=helpful';
url = new URL(str);
url.searchParams.delete('item'); // Idempotent call
result = url.toString();

在这种情况下,最好使用 URLSearchParams。 MDN DOCS

The URLSearchParams interface defines utility methods to work with the query string of a URL.

var url = new URL('https://example.com?foo=1&bar=2');
var params = new URLSearchParams(url.search);

// you can see params by this way
for (let p of params) {
  console.log(p);
}

// if you want to check if some params are exist
console.log(params.has('foo')); // true

// if you want to delete some params
console.log(params.toString());
params.delete('foo');
console.log(params.toString());