2015-09-29 2 views
0

У меня есть путь 'app/resources/main/assets/templates/path/to/template', что является лучшим способом последовательно удалить 'app/resources/main/assets/templates' с пути, оставив только 'path/to/template'? На данный момент я использую сращивания и присоединиться к 5 последних элементов массива с помощью раскола, но я, возможно, некоторые случаи, когда путь может быть больше, так что я хотел бы быть в состоянии надежно всегда удалить 'app/resources/main/assets/templates'Последовательно удалите определенную часть пути к файлу?

Моя версия

var path = 'app/resources/main/assets/templates/path/to/template'; 
path.split('/').splice(-5, 5).join('/'); 

, но не большой, еслиpath = 'app/resources/main/assets/templates/path/to/subfolder/template' //want only path/to/subfolder/template

+0

Удалить первые 5 вместо этого? – Barmar

ответ

1

Просто другая перспектива с Regex:

console.log(/templates\/(.*)/.exec(path)[1]); 

Перевод: Go, пока не найдете "шаблоны", когда нашли захвата все после него.

Чтобы получить предыдущие папки Aswell:

var newPaths = /(.*)templates(.*)/.exec(path); 
console.log(newPaths[1] + 'templates'); 
console.log('templates' + newPaths[2]); 
+0

Thats real nice! – styler

+0

Итак, это выходы/app/resources/main/assets/templates, как бы удалить этот запуск /? – styler

+0

@styler обновлен, добавлен '\ /', который удаляет косую черту. Пожалуйста, используйте в тегах кода ('/') или буквальное имя символа при обращении к одиночным символам, это легче понять. – Kriggs

1

вы можете сохранить базовый путь в переменной, а затем заменить его на каждом пути, где вы хотите, как и

var BASE_PATH = 'app/resources/main/assets/templates'; 
 
var path = 'app/resources/main/assets/templates/path/to/template'; 
 
var result = path.replace(BASE_PATH, ''); 
 

 
console.log(result);

0

Ответ на той же тенденции, как Kriggs. Если шаблон, который вы хотите изолировать, всегда начинается с path/, вы можете подмножать строку следующим образом:

var path = 'app/resources/main/assets/templates/path/to/template'; 
var pattern = /path\//; 
var FirstOccurrence = path.search(pattern); 
path = path.substring(FirstOccurrence,path.length); 
console.log(path); 
Смежные вопросы