2012-03-05 10 views
0

私はjavascriptについてよく知らないが(JAVAのみ)、私は(Googleブックマークから)見つかったいくつかのjavascriptコードをハッキングしないようにしている。Javascript:文字列中のスラッシュ(/)のインデックスを探す

ここに私の場合です:URLリンクの代わりにjavascriptを含むブックマークをブラウザに作成しています。ブックマークを押すと、同じURLの新しいウィンドウが開きますが、いくつかの追加情報が表示されます。 だから、https://www.abcde.com/KnowYourABCにイムを言うと私はブックマークを押すと、それがリンクしてウィンドウを開く必要があります。https://www.abcde.com.DoYou/KnowYourABC - 私は次のスクリプトを持っている 『/』

のように「.DoYouは」ちょうど第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) 
})(); 

これまでのところ、同じURLのウィンドウが開きます。しかし、私は3番目の "/"でURLを分割するように見えることはできません。

URLを分割し、「.DoYou」を挿入するために、バックスラッシュのインデックスを取得するために
i = url.indexOf("//",9) 

を試してみましたが、その後ウィンドウが開きません。私を助けてください!あなたは/(スラッシュ)をエスケープする必要はありません

SOLUTION

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); 
})(); 
+0

未修飾のjavascriptコードを投稿したい場合があります。 –

+1

参考のため、 '/'は通常のスラッシュです。 '\\'はバックスラッシュです。 – cHao

+1

'/'は正規表現でエスケープする必要があり、 '' \/''になります。文字列では '/'で十分です(何にも衝突しません)。 – pimvdb

答えて

5

これは、window.locationオブジェクト[host/search/etc]の部分または単純な分割と結合を使用して、単純なreg expを使って行うことができます。

ここでは、単純な分割および結合ソリューションを示します。受け入れ答えと同様に

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

これは理にかなっています!ありがとうございました! – Norfeldt

3

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

P.S.エスケープ文字は通常、バックスラッシュ(\)です。

+0

@Norfeldt:「うまくいかない」とはどういう意味ですか? '" https://www.abcde.com/KnowYourABC".indexOf("/ "、9)=== 21' –

+0

これは動作しません。このコードであなたのブラウザでブックマークを作成しようとすると(私はchromeを使用しています)、javascript :(function(){var a = window、b = document、c = encodeURIComponent、url = b.location (a.screenX || a.screenLeft)+50)+ "、top =" a.screenX "、" bkmk_popup "、" left = "+ a.setTimeout(function(){d.focus()); +(a.screenY || a.screenTop)+50)、height = 600px、width = 1200px、resizable = 1、alwaysRaised = 1 " }、300)})(); – Norfeldt

+0

インデックスメソッドが機能しないので、開いていないと仮定します – Norfeldt

0

、あなたは本当にあなたがstring.replace(replacedtext, newtext)や正規表現を使用することができ、インデックスを見つける必要がありますが、それに近い何かを配置しない場合。あなたはどちらかの側の単語文字と最初のスラッシュの前にテキストを追加したい場合

あなたのURLたとえば、あなたが

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

$1挿入第一括弧で囲まれた部分マッチ文字列を行うことができます(詳細説明についてはhereを参照してください$の)。あなたの問題のよう例

は、私は、同じウィンドウ内を除いて同じことをやってみたかったので、私はやった:ブックマークとしてこれを持っ

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

は私がちょうどクリックすることができますブックマークして、私が望むページに連れて行ってください。

関連する問題