1

想要一些帮助使用 jquery 替换字符串的一部分,所以这就是我所拥有的:

http://www.test.com/santa-cruz-island/?iframe=true&width=60%&height=70%

我想从头到尾替换所有内容?iframe=

到目前为止,我有这个:

jQuery('.islands_info_ggt').each(function() {
         url = jQuery(this).attr('href');
        _imgr = url.replace('iframe=', 'test');

    jQuery(this).attr('href', _imgr)
});

结果: http://www.test.com/santa-cruz-island/?testtrue&width=60%&height=70%

这是我正在寻找的结果:http://www.test.com/santa-cruz-island/?test

4

6 回答 6

7

改用正则表达式替换:

_imgr = url.replace(/iframe=.*$/, 'test');

顺便说一句,您不必将所有这些元素都包装在 jQuery 中:这...

jQuery('.islands_info_ggt').each(function() {
  this.href = this.href.replace(/iframe=.*$/, 'test');
});

...我想会给你同样的结果。事实上,你可以使用更简洁的.attr(name, function)形式:

jQuery('.islands_info_ggt').attr('href', function(_, attr) {
   return attr.replace(/iframe=.*$/, 'test');
});
于 2013-10-30T17:55:58.953 回答
4

对于非正则表达式解决方案,您可以拆分然后取第一个元素

var url = "http://www.test.com/santa-cruz-island/?iframe=true&width=60%&height=70%";
var finalurl = url.split('iframe=')[0] + "test";

结果 - http://www.test.com/santa-cruz-island/?test

于 2013-10-30T17:55:32.533 回答
1

目前它只匹配'iframe=.'。所以你需要 .* 以便它匹配它后面的所有字符和 $ 表示结束。

url.replace('/iframe=.*$/', 'test');
于 2013-10-30T17:56:37.103 回答
1

您可以使用在字符串indexOf中查找 的位置"iframe=",仅获取字符串之前的部分,然后在其后添加您想要的任何内容:

_imgr = url.substr(0, url.indexOf('iframe=')) + 'test';
于 2013-10-30T17:58:05.483 回答
0

您可以使用正则表达式:

_imgr = url.replace(/iframe=.*$/, 'test');
于 2013-10-30T17:57:24.870 回答
0

尽可能直接地在代码中执行您想要执行的操作。

这将产生最清晰和最可维护的代码。

在这种情况下,您希望将子字符串带到感兴趣的字符串的位置并将您的字符串添加到其中。

url = url.substr(0,url.indexOf('iframe=')-1)+'test';

使用这样的 API 来做你想做的事情总是会让你的代码对其他试图阅读它的人更清楚。

于 2013-10-30T17:57:40.327 回答