在文件path中转义空格
我想知道如何以编程方式在文件path中出现的空格前添加\
。 我正在使用fs.readdir
来获取目录的内容,如果我不逃离path的空间,那么我得到一个ENOENT
错误,因为在UNIX中无锯齿的path是无效的。 我想得到以下结果:
/path/with\ spaces/in/them/
但是,我遇到了NODE REPL中REGEX的问题。 当我做 :
var path = '/path/with spaces/in/them/'; var escapedPath = path.replace(/(\s)/, "\\ ");
我得到的结果是:
'/path/with\\ spaces/in/them/'
当我尝试在Chrome控制台中运行相同的代码时,我得到:
"/path/with\ spaces/in/them/"
这是预期的效果。
我不知道我是否错过了一些东西,或者这是一个错误。 我很困惑,因为节点运行在与Chrome浏览器相同的JavaScript引擎上,所以我认为这些expression式会被解释为相同的。
请让我知道,如果有人知道一个办法来解决这个问题。 也许我错过了一些东西。 我只需要能够在将它们传递到fs.readdir
之前就可以避开这些path,这样我就可以避免这些错误。
谢谢!
fs.readdir
不需要你转义path。 我能够recursion地将fs.readdir
输出目录传递回fs.readdir
没有任何问题。
上面的REGEX问题只发生在Node REPL中。 一旦我在一个文件中testing了上面的代码,我就可以通过Node运行它,并获得我在Chrome控制台中看到的相同输出。
我结束了在我的代码中发现一个有点难以追查的错误。 我首先想到的是,它不是逃离我发送到fs.readdir
的path,但实际上是一个问题,我是fs.stat
的输出,然后检查输出是文件还是目录,并处理它相应地。
事实certificate,统计的一些结果既不是文件或目录,我的function也没有办法处理这个,所以它只是返回。 由于我没有处理这个节点的程序,所以我只是停下了脚步。 我所要做的只是添加一个额外的条件来捕捉非文件/目录的情况下(我不在乎)。
现在它工作正常!
试试这个
var path = "'file:///Users/kevin/folder with space'";
或这个
var path = "\"file:///Users/kevin/folder with space\"";