1

我在使用 gsub 替换双斜杠时遇到了一些问题。问题是这样的:

我构建了一个小脚本来解析 YAML 文件的目录位置,然后使用它来 glob 该目录中的文件。假设这是它找到的目录:

C:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\ActionScript 3.0\Classes

这是一个 Windows 目录,反斜杠被 YAML 解析器转义,所以这真的是从解析器加载的:

C:\\Program Files\\Adobe\\Adobe Flash CS3\\en\\Configuration\\ActionScript 3.0\\Classes

要使用这个目录,我想 gsub 去掉这些双斜杠:

path.gsub('\\','/')

此调用替换了路径中的大部分双反斜杠,但脚本仍然无法正常工作。当我查看路径变成了什么时,我发现还有一个反斜杠没有被 gsub 替换:

\en

是什么解释了这种奇怪的行为?

4

1 回答 1

0

对我来说似乎工作正常。

irb(main):001:0> string = "C:\\Program Files\\Adobe\\Adobe Flash CS3\\en\\Configuration\\ActionScript 3.0\\Classes"
=> "C:\\Program Files\\Adobe\\Adobe Flash CS3\\en\\Configuration\\ActionScript 3.0\\Classes\n"
irb(main):003:0> string.gsub('\\', '/')
=> "C:/Program Files/Adobe/Adobe Flash CS3/en/Configuration/ActionScript 3.0/Classes\n"

您使用的是哪个版本的 Ruby?也许脚本中发生了其他事情?因为它对我来说在 irb 中效果很好。

于 2009-12-25T06:19:41.517 回答