[英]How do i get the string from after the third “/”
對編程完全陌生,所以請原諒這個愚蠢的問題。 我有這個網址http://www.blahblah.com/some/thing/blah ..
現在,我需要出現在第三個“ /”之后的字符串,即只是“ / some / thing”。我不想從反向開始,因為每個頁面的URL不同,但是協議和主機名相同..有沒有辦法我可以使用Javascript提取“ / some / thing”呢。感謝任何幫助..謝謝!
var part = string.split('/')[2]
或更復雜的是:
var string = "/a/b/c/d/e/d"
var arr1 = string.split('/')
var arr2 = []
for (i in arr1)
{
if (arr1[i].length > 0)
arr2.push(arr1[i])
}
var part = arr2[2]
使用string.split方法: http : //www.w3schools.com/jsref/jsref_split.asp
var str = "www.blah.com/blah/blah/thing/blah.php";
var arrayOfString = str.split("/");
alert(arrayOfString[2]); //coming back to do regex/substring for you
玩得開心! :)
順便說一下...如果您是Web開發的新手,www.w3schools.com對我來說非常好:)
因此,要響應您的編輯,您需要執行以下操作:
假設以上已經:
alert(arrayOfString.slice(3).join("/"));
好的,可以根據實際需要在這里修復它。.但是就像我說的那樣,請訪問http://www.w3schools.com,它確實教會了我一些良好的基礎知識。
要修復注釋中的失敗情況,請在split / slice / join之前執行以下操作:
if (str.substring(0,1) == "/"){ str = str.substring(1);}
我會在這里使用一個簡單的正則表達式。
一種獲取第三個“ /” 之后的內容的方法是將其與之前的所有內容一起丟棄 。
基本思路:
"/a/b/c/d/e/f".replace(/.*?\/.*?\/s.*?\//, "")
// -> "c/d/e/f"
備選方案1,以減少重復:
"/a/b/c/d/e/f".replace(/(?:.*?\/){3}/, "")
備選方案2,如果輸入內容可以包含換行符:
"/a/b/c/d/e/f".replace(/(?:[^\/]*\/){3}/, "")
*?
限定詞的意思是“別貪心” .
不會跳過/
。 在否定字符類的情況下不需要它,因為[^\\/]
永遠不會匹配/
。
當然,這可以用“不太通用”的形式來寫,因為真正的目的只是為了擺脫URI的協議/域部分( /
的數目只是觀察到的關系):
"http://foo/a/b/c/d/e/f".replace(/https?:\/\/[^\/]*\/?/i, "")
// -> "a/b/c/d/e/f"
請注意,最后一個\\/
有一個?
在此之后,它將為“ http:// foo”返回“”,而i
則將與HTTP://
匹配(如果出於某種奇怪的原因使用了HTTP://
,當然是完全可選的)。
"HTTPS://foo".replace(/https?:\/\/[^\/]*\/?/i, "")
// -> ""
編碼愉快!
注意:以上所有正則表達式都將在問題3nd /
之后提取內容。 它們將需要稍作修改以將3rd /
包含在結果中。 同樣,它有助於不問XY問題。
var str = 'http://www.blahblah.com/some/thing/blah'
var afterThirdSlash = str.split('/').slice(3).join('/')
split
返回一個數組,該數組是每個/
字符上拆分的字符串。 slice
從第四個元素開始選擇數組的一部分(因為數組從零開始),因為它對應於第三個斜杠之后的部分。 在join
通過重新插入件一起這些元素回/
。 這就是你想要的嗎?
如果您知道網址以“ http://www.blahblah.com/”開頭,為什么不使用url.substring(24)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.