簡體   English   中英

使用 Javascript 刪除 URL 結尾

[英]Using Javascript to remove end of URL

使用 window.location.pathname 我得到“/Mobile/Evol/12-20-2011”。

使用 Javascript,我如何在“Evol/”之后放下所有內容,以便獲得“/Mobile/Evol/”?

您可以使用substring()lastIndexOf()函數的組合來輕松切斷最后一個/之后的所有內容:

uri    = "/Mobile/Evol/12-20-2011";
newUri = uri.substring(0, uri.lastIndexOf('/'));

正如@josh 指出的,如果在“/Evol”之后還有更多目錄,這將失敗。 您可以通過搜索字符串 'Evol/' 然后將其長度添加回子字符串末尾來解決此問題:

dir = "Evol/";
newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length);

Chrome 控制台給了我這個輸出:

> uri    = "/Mobile/Evol/12-20-2011";
"/Mobile/Evol/12-20-2011"

> dir = "Evol/";
  newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length);
"/Mobile/Evol/"

只需在 JavaScript 字符串中使用“split”函數,

var url = '/Mobile/Evol/12-20-2011';
var tokens = url.split('/');
var reqURL = token[0] + '/'+ token[1] ;

當然URL格式必須是一樣的some_string/some_string/some_string

var str = window.location.pathname;
const sub = "Evol/";

var locEvol = str.indexOf(sub);
var endIdx = locEvol + sub.length;
var beginStr = str.substring(0, endIdx);
// beginStr contains the desired substring

假設您想完全切斷任何查詢和片段:

url.replace(/\/Evol\/[^?#]*(?:[?#].*)?$/, '/Evol')

要打破這個正則表達式:

  1. \\/Evol\\/匹配文字文本"/Evol/" \\是必需的,因為//Evol/...將是行注釋,並且正則表達式中其他地方的/結束正則表達式。
  2. [^?#]匹配除查詢或片段分隔符以外的任何內容
  3. (?:...)? 只是讓一些可選的東西
  4. [?#].*匹配查詢或片段開頭,后跟任意數量的非空白字符
  5. $強制匹配到達輸入的末尾。

一個班輪:

match.url.split("/").slice(0,-1).join("/")

 let array1 = "/first/second/third/fourth"; let array2="posts/stories/1234"; console.log("Result=",array1.split("/").slice(0,-1).join("/")); console.log("Result=",array2.split("/").slice(0,-1).join("/"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM