[英]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.