如何更改网址路径的最后一个组件?

时间:2010-10-26 16:15:37

标签: javascript

"http://something.com:6688/remote/17/26/172"

如果我的值为172,我需要将网址更改为175

"http://something.com:6688/remote/17/26/175"

我怎么能用JavaScript做到这一点?

7 个答案:

答案 0 :(得分:18)

var url = "http://something.com:6688/remote/17/26/172"
url = url.replace(/\/[^\/]*$/, '/175')

翻译:找一个斜杠\/,其后跟任意数字*的非斜杠字符[^\/],后跟字符串$的结尾。

答案 1 :(得分:2)

Split /之后的字符串然后更改最后一部分,并按/重新join

var newnumber = 175;
var url = "http://something.com:6688/remote/17/26/172";
var segements = url.split("/");
segements[segements.length - 1] = "" + newnumber;
var newurl = segements.join("/");
alert(newurl); 

Try it!

答案 2 :(得分:2)

用/拆分字符串,删除最后一部分,用/重新加入,然后添加新路径

newurl = url.split('/').slice(0,-1).join('/')+'/175'

答案 3 :(得分:1)

取决于你想做什么。

实际更改浏览器网址
如果您确实想将浏览器推送到其他网址,则必须使用window.location = 'http://example.com/175'

更改浏览器网址哈希
如果您只想更改哈希,只需使用window.location.hash即可。

重复使用链接或类似网址
如果您想引用链接或类似网址,请查看George's answer

答案 4 :(得分:1)

new URL("175", "http://something.com:6688/remote/17/26/172").href

这也适用于路径,例如

new URL("../27", "http://something.com:6688/remote/17/26/172").href"http://something.com:6688/remote/17/27"

new URL("175/1234", "http://something.com:6688/remote/17/26/172").href"http://something.com:6688/remote/17/26/175/1234"

new URL("/local/", "http://something.com:6688/remote/17/26/172").href"http://something.com:6688/local/"

有关详细信息,请参见https://developer.mozilla.org/en-US/docs/Web/API/URL/URL

答案 5 :(得分:0)

在没有页面刷新的情况下,您无法使用javascript实际更改地址栏中显示的URL。如果可能的话,我认为这将代表一个相当大的安全问题。如果您可以使用页面刷新,window.location是您的最佳选择。

如果您使用的是jQuery,jQuery BBQ插件非常简洁。它为你处理了很多艰苦的工作。

答案 6 :(得分:0)

//替代方式。

var str =  window.location.href;
var lastIndex = str.lastIndexOf("/");
var path = str.substring(0, lastIndex);
var new_path = path + "/new_path";
window.location.assign(new_path);