簡體   English   中英

獲取倒數第二個並在此之后捕獲字符串

[英]Getting second last occurrence and capturing the string after that

我以下面的 url 字符串為例

https://jsonplaceholder.typicode.com/todos/101/'

我想存儲101以便可以在其他邏輯中使用該部分字符串。 我嘗試了以下。

const filter = (value)=>{
    return value.split("/").pop();
})

但它返回空,據我所知,作為pop(),最后彈出但最后一位只是/,之后什么也沒有。

如何修改我的代碼以在倒數第二個之后給我值/

如果不確定是否會有尾部斜杠,可以使用過濾器刪除所有空元素,然后彈出“101”:

 const filter = value => value.split('/').filter(i => i).pop() console.log(filter('https://jsonplaceholder.typicode.com/todos/101/')) console.log(filter('https://jsonplaceholder.typicode.com/todos/101'))

filter(i => i)只是簡單地循環遍歷數組中的每個項目以查看其計算結果是否為真,因此所有虛假項目(如 '' 或 undefined 都將被刪除。

因為 URL 以您要拆分的分隔符結尾,所以結果數組中的最后一項將是空字符串,倒數第二項將是您要查找的匹配項。 您可以.pop()兩次:

const filter = (value)=>{
  const splits = value.split('/');
  splits.pop();
  return splits.pop();
};

或者您可以使用正則表達式來匹配非/字符,后跟/和字符串的結尾::

 const filter = value => value.match(/[^\/]+(?=\/$)/)[0]; console.log(filter('https://jsonplaceholder.typicode.com/todos/101/'))

當你拆分時,最后一個 / 被拆分為一個空字符串,當你 pop() 時你會收到它。 如果我們在拆分之前將其刪除,您將獲得您想要的結果。

你可以這樣做 oneliner value.slice(0, -1).split('/').pop();

您可以提取最后一個“/”之前的數字,如下所示。

const url = 'https://jsonplaceholder.typicode.com/todos/101/';

const filter = value => {
    let segments = value.split('/');
    return segments[ segments.length -2];
}

console.log(filter(url));

暫無
暫無

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

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