一直删除文件路径的某个部分?

时间:2015-09-29 14:45:09

标签: javascript arrays

我有一个路径'app/resources/main/assets/templates/path/to/template',从路径中始终删除'app/resources/main/assets/templates'的最佳方式是什么,只留下'path/to/template'?目前我正在使用splice并使用split来连接最后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

3 个答案:

答案 0 :(得分: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);




答案 1 :(得分:1)

与Regex的不同视角:

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

翻译:直到找到“模板”,找到之后捕获所有内容。

获取以前的文件夹以及:

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

答案 2 :(得分:0)

回答与克里格斯相同的趋势。如果要隔离的模式始终以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);