我有一个路径'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
答案 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);