Как получить последний массив символов перед определенной строкой

#javascript

#javascript

Вопрос:

row1: 10016/Documents/folder1/abc.pdf

row2: 10016-10017/10017/Documents/folder1/folder2/xyz.pdf

Я пытаюсь получить строку до /Documents, но если есть какой-либо / before, мне нужно получить строку после этого

В строке 1 мне нужно получить 10016

В строке 2 мне нужно получить 10017

Я пытался

 var output = filepath.split("/").slice(0,1);
 

Ответ №1:

Вы можете разделить на ‘/ Documents /’, попробуйте это:

 let str = '10016/Documents/abc.pdf';

console.log(str.split('/Documents/')[0]) 

Комментарии:

1. для строки 2 он извлекает 10016-10017 / 10017, в то время как я ищу o / p только 10017

Ответ №2:

Разделите на /Documents/ , затем разделите это на / и получите конечный элемент:

 const row1 = "10016/Documents/folder1/abc.pdf";
const row2 = "10016-10017/10017/Documents/folder1/folder2/xyz.pdf";

let docs = row1.split("/Documents/")[0];
let nums = docs.split("/");
nums = nums[nums.length - 1];

console.log(nums);

docs = row2.split("/Documents/")[0];
nums = docs.split("/");
nums = nums[nums.length - 1];

console.log(nums); 

Это работает для обоих row1 и row2 , как вы можете видеть.

Ответ №3:

Вы можете использовать регулярное выражение, чтобы получить это

 ([a-zd] )/Documents
 

Объяснение регулярного выражения

  • Захватывайте все, что содержит одно или несколько вхождений ( ) вхождения алфавита (a-z) или цифры (/d)
  • Также убедитесь, что этот набор символов находится прямо перед /Documents фразой
     let result = RegExp(/([a-zd] )/Documents/).exec('10016/Documents/abc.pdf');
    if (result) { console.log(result[1]) }

    result = RegExp(/([a-zd] )/Documents/).exec('10016-10017/10017/Documents/xyz.pdf');
    if (result) { console.log(result[1]) }