1

我正在尝试从需要复制的目录中删除 __dirname(递归)。我收集有关问题的信息:

console.log(typeof __dirname); // string
console.log(__dirname); // c:\test

我需要从我从程序中获得的字符串创建正则表达式。因此我必须使用RegExp(myString). 我对 jsfiddle 进行了现实检查,以确保逃避 \ 的正确方法是使用 \/ fiddle

我在浏览器中运行代码,它可以工作。我在 node.js 中运行代码,但它不起作用。通过尝试从 __dirname中删除,我将这一点发挥到了极致。RegExp(__dirname)

如果你有一个字符串var s = __dirname.toString() + "myOtherPath/a.cat",你如何从 s 中删除字符串的 __dirname 部分?

4

1 回答 1

1

您的正则表达式示例是错误的。正则表达式用于删除反斜杠。但是字符串本身没有反斜杠或斜杠。

var y = "c:\y";
//"c:y"

要正确添加反斜杠,您必须

var y = "c:\\y";
//"c:\y"

您的示例可以在分隔符为 / 的 linux 中工作,不需要转义。此外,看起来您正在执行子字符串替换而不是正则表达式替换。因此,只需在替换中给出 __dirname 就足够了:

var y = __dirname;
var z = y.replace(__dirname,"").toString();
于 2013-10-07T05:16:56.487 回答