我正在尝试将字符串解析为理论上的虚拟路径(全部在客户端创建),使用普通的旧 JavaScript,没有 NodeJS,什么都没有(我尝试创建一个新 URL 或将路径设置为 href 等,但我希望它在网络工作者内部工作)。
基本上,有一个虚拟文件系统,它以 . 开头,"C:/"
然后像所有其他路径系统一样下降。假设我得到一个字符串作为输入,例如
"C:/someDir/someOtherDir/someThirdDir/../../folderInSomeDir/fileInFolderInSomeDir.txt"
所以理论上这将访问,正如文件本身的名称所说,文件夹内的文件,该文件夹本身位于名为someDir
.
最难处理的部分是该../../
部分,因此上面的预期输出字符串将是
"C:/someDir/folderInSomeDir/fileInFolderInSomeDir.txt"
我只是想知道如何准确地处理该../../
部分,我尝试拆分字符串/
并循环遍历各个部分,确定当前字符串是否等于..
,并跟踪当前目录,这将立即在 each 之前..
,但我对接下来要做什么以获取输出字符串一无所知。这是我的功能,目前
b.onclick = () => {
out.innerHTML = resolve(p.value)
};
function resolve(path, basePath = "/") {
var pathd = pathify(path)
if(basePath != "/") basePath = resolve(basePath)
var based = pathify(basePath)
var baseDirs = based.split("/")
var directs = pathd.split("/")
var upDirs = 0
var currentDir = ""
var numberDirs
var result
directs.forEach((x, i, ar) => {
if(x == ".." || i == 0 && x == "") {
upDirs++
}
else {
currentDir = x
}
})
result = directs.join("/") //what else do I Do?!
return result
}
function pathify(path) {
var newPath = ""
if(typeof path == "string") {
var slashesDoubled = 0,
dotsDoubed
path.split("").forEach(x => {
var isIts = [
"\n"
]
狐的传说
相关分类