Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否始终删除文件路径的某一部分?_Javascript_Arrays - Fatal编程技术网

Javascript 是否始终删除文件路径的某一部分?

Javascript 是否始终删除文件路径的某一部分?,javascript,arrays,Javascript,Arrays,我有一个路径'app/resources/main/assets/templates/path/to/template',从路径中删除'app/resources/main/assets/templates'的最佳方法是什么?目前,我正在使用Splite并连接使用split的最后5个数组项,但我可能会遇到路径更长的情况,因此我希望能够可靠地始终删除'app/resources/main/assets/templates' 我的版本 var path = 'app/resources/main/a

我有一个路径
'app/resources/main/assets/templates/path/to/template'
,从路径中删除
'app/resources/main/assets/templates'
的最佳方法是什么?目前,我正在使用Splite并连接使用split的最后5个数组项,但我可能会遇到路径更长的情况,因此我希望能够可靠地始终删除
'app/resources/main/assets/templates'

我的版本

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

但如果路径='app/resources/main/assets/templates/path/to/subfolder/template'//只需要path/to/subfolder/template您可以将基本路径存储在变量中,然后在需要的每个路径中替换它,就像这样

var BASE_PATH='app/resources/main/assets/templates';
var path='app/resources/main/assets/templates/path/to/template';
var result=path.replace(基本路径“”);

控制台日志(结果)只是正则表达式的一个不同视角:

console.log( /templates\/(.*)/.exec(path)[1] );
翻译:直到找到“模板”,当找到后捕获所有内容

要同时获取以前的文件夹,请执行以下操作:

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

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

改为删除前5个?因此这将输出/app/resources/main/assets/templates,如何删除起始/?@styler updated,added
\/
,删除斜杠。当引用单个字符时,请在代码标记(
/
)或字符的文字名称中使用,这样更容易理解。