Javascript:在字符串中查找斜杠(/)的索引

时间:2012-03-05 14:09:24

标签: javascript

我对javascript(仅完成JAVA)了解不多,但是我没有对我发现的一些javascript代码(来自Google书签)进行黑客攻击。

以下是我的情况:我在浏览器中创建一个包含javascript而不是URL链接的书签。当我按下书签时,我希望它打开一个具有相同网址但有一些额外信息的新窗口。 所以说我在https://www.abcde.com/KnowYourABC并按下书签,然后它应该打开一个带有链接的窗口:https://www.abcde.com.DoYou/KnowYourABC - 所以“。你好”已经插入到第3个“/”之前

我有以下脚本:

javascript:(function(){
    var a=window, b=document, c=encodeURIComponent,
    url = b.location,
    d = a.open(url, "bkmk_popup", "left="+
    ((a.screenX||a.screenLeft)+50)+",top="+
    ((a.screenY||a.screenTop)+50)+
    ",height=600px, width=1200px, resizable=1, alwaysRaised=1");
    a.setTimeout(function(){d.focus()},300)
})();

到目前为止,它打开了一个具有相同网址的窗口。但我似乎无法在第3个“/”分割网址。试图获取反斜杠的索引以分割网址并插入“.DoYou”

 i = url.indexOf("//",9)

然后窗口将无法打开。请帮帮我!

javascript:( function(){ 
    var a=window;
    b=document;
    c=encodeURIComponent; 
    url = b.location; 
    var parts = window.location.href.split("/");
    parts[2] += ".DoYou";
    var newurl = parts.join("/");
    a.open(newurl, "bkmk_popup","left="+((a.screenX||a.screenLeft)+50)+",top="+((a.screenY||a.screenTop)+50)+",height=600px,width=1200px,resizable=1,alwaysRaised=1"); a.setTimeout(function(){d.focus()},300);
})();

3 个答案:

答案 0 :(得分:5)

可以使用一个简单的reg exp,使用window.location对象[host / search / etc]的部分或简单的拆分和连接来完成。

这是简单的拆分和连接解决方​​案。

var parts = window.location.href.split("/");
parts[2] += ".DOYOU";
var newStr = parts.join("/");
console.log(newStr);

答案 1 :(得分:3)

您无需转义/(正斜杠)。

i = url.indexOf("/",9)

P.S。转义字符通常是反斜杠(\)。

答案 2 :(得分:0)

与接受的答案类似,如果您不是真的需要找到索引,但想要在其附近放置某些内容,则可以使用string.replace(replacedtext, newtext)和RegEx。

对于您的网址示例,如果您想在第一个斜杠之前添加文字,并在两边添加单词字符,那么您可以

url = url.replace(/(\w(?=\/\w))/, '$1' + '.DoYou');

$1插入第一个带括号的子匹配字符串(有关$的更多说明,请参阅here)。

示例

和你的问题一样,我想做同样的事情,除了在同一个窗口,所以我做了:

javascript:void(location.href=location.href.replace(/(\w(?=\/\w))/,'$1'+'.DoYou'))

将此作为书签,我只需点击书签即可转到我想要的页面。