所以我正在做一个简单的函数,将文件名和目录路径分开。我相信节点的Path模块有一种更简单的方法,但是我想我自己为此项目做。
所以问题是当我在字符串中写入反斜杠字符时,我会将它们转义为“ directory \ AnothaDirectory”之类的字符串。它可以运行,但是用于解析的双“ \”和“ \\”在解析后仍保留在字符串中。例如:“ C:\\ Documents \ Newsletters”。
我都尝试过使用单个backslahses,这会引发编译器错误,正如人们所期望的那样。但我也尝试使用正斜杠。反斜杠不能逃脱的原因可能是什么?
function splitFileNameFromPath(path,slashType){
let pathArray = path.split(slashType),
fileName = pathArray[pathArray.length - 1],
elsIndexes = pathArray.length - 1,
pathSegs = pathArray.slice(0, elsIndexes);
let dirPath = pathSegs.join(slashType);
//adds an extra slash after drive name and colon e.g."C:\\"
dirPath = dirPath.replace( new RegExp("/\\/","ug"), "\\" )
//removes illegal last slash
let pathSeg = pathSegs.slice(0,-1)
return [dirPath, fileName]
}
let res = splitFileNameFromPath("C:\\\\Documents\\Newsletters\\Summer2018.pdf","\\");
console.log(res)
答案 0 :(得分:0)
这段代码中有些时刻我不明白。
"C:\\\\Documents\\Newsletters\\Summer2018.pdf"
(即"C:\\Documents\Newsletters\Summer2018.pdf"
)似乎不是有效的Windows路径,因为通常使用的驱动器号后没有双斜杠(这与URL {{1 }}。
'https://...'
等于new RegExp("/\\/","ug")
,并且不匹配任何内容。
根本没有使用/\/\//gu
的结果。
在我看来,这段代码足以完成任务:
let pathSeg = pathSegs.slice(0,-1)