Удалить остаток строки после второго до последнего индекса - PullRequest
0 голосов
/ 16 ноября 2018

Я относительно новичок в JS и довольно смущен.У меня есть строка URL: https://a/b/c/d/e/f. Все это динамические символы и часто меняются (например, https://x/s/g/e/h/d). В некоторых случаях я хочу удалить только f, в которой я использую LastIndexOf.В других случаях я хочу удалить как последний, так и второй, последний EG: e / f.Как это можно сделать успешно?Я попытался использовать разделение, но это почему-то просто заменило «/» на «,».

пример работы f

var url = https://a/b/c/d/e/f
var new = url.substring(0, url.lastIndexOf('/') +1);

пример текущего разделения e / f

var new = url.split('/')
console.log(new[new.length -2]);

Это печатается как: https: ,, a, b, c, d, e, е

Ответы [ 5 ]

0 голосов
/ 16 ноября 2018

Вы можете использовать:

var num;
for ( var i=0; i< num; i++) {
    url= url.substring(0, url.lastIndexOf('/'));
}
0 голосов
/ 16 ноября 2018

split () создает массив подстрок, который передается в функцию split. Поэтому, когда вы пишете

url.split ('/') создаст массив подстрок с / в качестве разделителя.

Ответ может быть:

получите индекс элемента до того момента, когда вы хотите удалить свою строку, используя:

var index = indexOf(x)

затем передайте его в функцию.

var str1 = str.substr(0, index)

str1 будет вашим ответом

0 голосов
/ 16 ноября 2018

Вот ты

const str = 'https://a/b/c/d/e/f'

function removeSegments(url, times) {
    const segments = url.split('/')
    return segments.slice(0, segments.length - times).join('/')
}

console.log(removeSegments(str, 1)) // 'https://a/b/c/d/e'
console.log(removeSegments(str, 2)) // 'https://a/b/c/d'
0 голосов
/ 16 ноября 2018

Вы можете легко сделать это, используя URL API .

Вам нужно разделить путь на /, а затем использовать Array#slice, чтобы взять только те части, которые вам нужны. Затем присоединитесь к ним снова /.

Вот пример:

var url = new URL('https://a/b/c/d/e/f');

console.log(
  url.origin +
  url.pathname.split('/').slice(0, -2).join('/')
);
0 голосов
/ 16 ноября 2018

Вот один вариант, использующий замену регулярных выражений. Чтобы удалить только последний путь:

url = "https://a/b/c/d/e/f";
url = url.replace(/\/[^/]+$/mg, "");

Чтобы удалить последние два пути:

url = "https://a/b/c/d/e/f";
url = url.replace(/\/[^/]+\/[^/]+$/mg, "");
...