【问题标题】:Convert directory backslah to forward slash将目录反斜杠转换为正斜杠
【发布时间】:2020-11-10 02:14:15
【问题描述】:

我想读取目录路径以将 Windows 目录转换为 Linux 目录。

我试过了:

"C:\Users\503176332\dashboard\Dashboard-sans-swirl\pcm-dashboard\src\app\components\admin"
  .replace(new RegExp(/\\/g), "/")

输出:"C:Users(3176332dashboardDashboard-sans-swirlpcm-dashboardsrcappcomponentsadmin"

【问题讨论】:

  • 但在字符串文字本身中,反斜杠应该转义。您当前的字符串文字不包含反斜杠:"\50""(",但 "\\50" 是反斜杠,后跟 "50",依此类推。如果您从其他地方(反斜杠已经是字符串的一部分)获取路径,则方法调用确实可以工作,尽管这里不需要 RegExp 构造函数。只需执行path.replace(/\\/g, "/")path.replaceAll("\\", "/")
  • 这能回答你的问题吗? Javascript and backslashes replace(忽略thegajman的回答)。
  • 字符串开头没有反斜杠。如果您将其作为字符串文字使用,请使用 "\\" 作为单个反斜杠。反斜杠是字符串上下文中的特殊字符,应该转义(使用另一个反斜杠)。这样你就可以输入"\n",它变成一个换行符,而不是文字\,后跟文字n。所以字符串应该是:"C:\\Users\\503..."

标签: javascript node.js replace


【解决方案1】:

如果您从字面上尝试字符串“C:\Users\503176332\dashboard\Dashboard-sans-swirl\pcm-dashboard\src\app\components\admin”,那么 JavaScript 会将每个 \ 解释为转义字符,而且正则表达式也不正确:您可以只输入/\\/g 而不是new Regexp(/\/g),因为反斜杠是一个转义字符,我们需要输入两次。这同样适用于你的路径常量。

如果你试试这个:

"C:\\Users\\503176332\\dashboard\\Dashboard-sans-swirl\\pcm-dashboard\\src\\app\\components\\admin".replace(/\\/g,"/")

它会给你这个:

"C:/Users/503176332/dashboard/Dashboard-sans-swirl/pcm-dashboard/src/app/components/admin"

【讨论】:

  • 反斜杠在这里也被用作 Markdown 编辑器中的转义字符。您需要将代码格式化为代码,尤其是在它包含反斜杠的情况下。问题源从未包含new Regexp(/\/g)。它一直包含new RegExp(/\\/g),这正确的,但是过分了。
猜你喜欢
  • 2014-09-28
  • 2018-08-30
  • 2019-11-19
  • 2016-08-07
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多