用javascript替换URL中的字符串

时间:2010-09-05 16:48:30

标签: javascript regex

我认为这是微不足道的,但无法解决:(

我想用javascript更改mu url中传递的参数。

var fullurl = window.location;
//do dome stuff to find var url.
fullurl.replace(/sort:.*\/direction:.*/g,'sort:' + url + '/direction:asc');

基本上有一个网址:http://example.com/article/http://example.com/article/sort:author/direction:asc

我是第一种情况,我不希望任何改变。在第二步中,我想将sort:替换为sort:url

上面的代码似乎没有做任何事情。我认为问题是regexp没有被解析,它返回一个内有.*\/的网址

任何帮助?感谢

2 个答案:

答案 0 :(得分:1)

window.location不是字符串,它是一个隐式转换为字符串的特殊对象。此外,string.replace返回新值,它不会更改原始字符串。尝试这样的事情:

var fullurl = window.location.toString();
//do dome stuff to find var url.
window.location = fullurl.replace(/sort:.*\/direction:.*/g,'sort:' + url + '/direction:asc');

答案 1 :(得分:1)

window.location是一个包含以下属性的对象:

.hash
.host
.hostname
.href
.pathname
.port
.protocol
.search

您可能想要解析href字符串。我做了一个初步测试,其中我记下了url期望和替换工作,除了你没有指出url是什么。否则,请在控制台中尝试以下操作:

x = window.location.href
url = "SomeValue"
y = x.replace(/sort:.*\/direction:.*/g, 'sort:' + url + '/direction:asc')

你应该得到你期望的结果,假设你检查y而不是x,因为替换操作返回结果并且不会改变对象本身。