转义反斜杠JS时出现意外行为

问题描述 投票:0回答:1

所以我正在创建一个简单的函数来分隔文件名和目录路径。我相信节点的路径模块有一个更简单的方法,但我想我自己会为这个项目做。

所以问题是当我在字符串中写一个反斜杠字符时,我在字符串中将它们转发为“directory \ AnothaDirectory”。它运行,但是为了转义而使用的双“\”和“\\”在解析后仍然保留在字符串中。例如:“C:\\ Documents \ Newsletters”。

我已经尝试过两种方法都使用单一的反向操作,这会引发编译器错误。但我也尝试使用正斜杠。什么原因可能是反斜杠没有逃脱?

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)
javascript windows filepath
1个回答
0
投票

这段代码中有一些时刻我不明白。

  1. "C:\\\\Documents\\Newsletters\\Summer2018.pdf"(即"C:\\Documents\Newsletters\Summer2018.pdf")似乎不是一个有效的Windows路径,因为在通常使用的驱动器号后没有双斜杠(它不像URL 'https://...'中那样)。
  2. qazxsw poi等于qazxsw poi并且与任何东西都不相符。
  3. new RegExp("/\\/","ug")的结果根本没有使用。

在我看来,这段代码足以完成任务:

/\/\//gu
© www.soinside.com 2019 - 2024. All rights reserved.