【问题标题】:Extract part of path from full path Javascript从完整路径Javascript中提取部分路径
【发布时间】:2016-02-08 10:53:15
【问题描述】:

如何提取

pathB/pathC/pathD

来自

pathA/pathB/pathC/pathD/data.json

欢迎任何第三方库或纯 javascript

在一些 webpack 的加载器中,例如 ng-cache-loader,我发现它们可以通过指定 '//' 来剥离路径的中间部分。

来自 ng-cache-loader 文档:

前缀可以去掉真实的目录名(使用//):

require('ng-cache?prefix=public/*//*/templates!./far/far/away/path/to/myPartial.html')
// => ng-include="'public/far/path/templates/myPartial.html'"  

我在 ng-cache-loader 源代码中找不到任何处理路径的代码。 也许我可以使用与他们相同的方式剥离路径的中间部分?

【问题讨论】:

  • 您将在什么背景下执行此操作?基本上,我会将其作为字符串解析,使用 JS 中可用的 String 对象方法或使用 RegEx。

标签: javascript angularjs webpack


【解决方案1】:

正如 mzografski 提到的,我将您的问题视为字符串解析问题。你可以检查这个工作JSFIDDLE

代码:

$scope.ToExtract = 'pathB/pathC/pathD';
$scope.test = 'pathA/pathB/pathC/pathD/data.json';

$scope.extract = function(partToExtract, fullPath) {
    var index = fullPath.indexOf(partToExtract);
    return(fullPath.substring(0, index) + fullPath.substring(index+partToExtract.length+1, fullPath.length));
};

$scope.extract($scope.ToExtract, $scope.test);

【讨论】:

  • 你怎么知道你需要提取的部分从哪里开始,你怎么知道它在哪里结束?是第一个“/”和最后一个“/”之间的所有内容吗?
  • 是的,我总是需要第一个 / 和最后一个 / 之间的所有内容,我已经发布了答案
【解决方案2】:
var sep = '/';
var path = 'pathA/pathB/pathC/pathD/data.json';
path = path.split(sep);
path.shift();
path.pop();
path = path.join(sep);

// log pathB/pathC/pathD
console.log(path);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 2018-08-13
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多