Получение определенной части строки URL

#javascript

#javascript

Вопрос:

Вот рабочий код, который я должен получить определенную часть строки URL:

 const movieName = "frozen_2019";
const courseName = "olaf_is_enjoying_living_his_dream_1";


const source = "your majesty from https://example.com/english/courses/frozen_2019/olaf_is_enjoying_living_his_dream_1/voices/references/translate/do you hear that.mp3";

console.log(getSourceError(source)); // result

function getSourceError(source) {

  const a = source.substring(source.indexOf(courseName)   courseName.length   1);
  const b = a.substring(a.lastIndexOf("/"));
  return a.replace(b , "");

}  

Хотя это работает так, как ожидалось, но я думаю, что для этого должно быть более чистое решение…

Как вы видите, мне нужна строка между courseName и file name в конце URL-адреса.

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

1. Что, если вы можете сделать что-то вроде source .split('/').splice(7,3).join('/')

Ответ №1:

Я не совсем уверен, что вы подразумеваете под более чистым решением, но это однострочная строка с регулярным выражением, предполагающая, что вы получили те же имена переменных, что и в вашем фрагменте. Это то, чего вы хотели достичь? Вы можете обрезать последний и первый символ, чтобы удалить косые черты, если это необходимо.

 const source = "your majesty from https://example.com/english/courses/frozen_2019/olaf_is_enjoying_living_his_dream_1/voices/references/translate/do you hear that.mp3";
const courseName = "olaf_is_enjoying_living_his_dream_1";
let extracted = source.match("(?<=" courseName ").*/");
console.log(extracted);  

Ответ №2:

Как вы видите, мне нужна строка между именем курса и именем файла в конце URL-адреса.

При работе со строками URL-адреса часто рекомендуется разбить строку на массив с помощью:

 let myURLArray = myURLString.split('/');
  

Затем в этой ситуации вы можете использовать:

  • indexOf()
  • splice()
  • join()

чтобы вернуть нужную часть URL-адреса.

Рабочий пример:

 const courseName = "olaf_is_enjoying_living_his_dream_1";
const source = "your majesty from https://example.com/english/courses/frozen_2019/olaf_is_enjoying_living_his_dream_1/voices/references/translate/do you hear that.mp3";

let sourceArray = source.split('/');
let courseNameIndex = sourceArray.indexOf(courseName);
let urlSectionArray = sourceArray.splice((courseNameIndex   1), ((sourceArray.length - 1) - courseNameIndex - 1));

let urlSection = urlSectionArray.join('/');
console.log(urlSection);  

Ответ №3:

Привет, если ваш источник соответствует его структуре, вы можете разделить и соединить нужные вам части.

 source.split('/').splice(7,3).join('/')