1

gsub を使用して二重スラッシュを置き換えるという問題が発生しています。問題はこれです:

YAML ファイルを解析してディレクトリの場所を特定し、それを使用してそのディレクトリ内のファイルをグロブする小さなスクリプトを作成しました。これが見つけたディレクトリだとしましょう:

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 に置き換えられていないバックスラッシュが 1 つ残っていることがわかりました。

\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 に答える