1

特定のエクスポート ソースからのバックスラッシュ付きのパス文字列 (ウィンドウ) を次の形式で持っています。

"path\to\something"

それをルビーで読もうとすると、

\t

\s

エスケープ シーケンスとして。最後に、私はただしたい

File.join(my_unix_path, "path\to\something")

そんなこと知ってる

%q{"path\to\something"}

動作しますが、変数内に文字列があるため、そのように使用することはできません。それを削除するか、通常のUNIXパスに変換する方法はありますか?

4

2 に答える 2

5

Ruby では、パスにバックスラッシュをわざわざ使用しないでください。

他の多くの言語と同様に、Ruby はプラットフォームを認識しており、パス スラッシュをプラットフォームの正しい方向に自動的に変換します。つまり、パスで常にスラッシュを使用して、それで完了できることを意味します。

IOのドキュメントから:

Ruby は、可能であれば、異なるオペレーティング システムの規則間でパス名を変換します。たとえば、Windows システムでは、ファイル名「/gumby/ruby/test.rb」は「\gumby\ruby\test.rb」として開かれます。Ruby 文字列で Windows スタイルのファイル名を指定するときは、必ずバックスラッシュをエスケープしてください。

"c:\\gumby\\ruby\\test.rb"

ここでの例では、Unix スタイルのスラッシュを使用します。File::SEPARATOR を使用して、プラットフォーム固有の区切り文字を取得できます。

"path\to\something"追加情報として、エスケープされた\sandを持つことで発生している問題\tは、文字列が二重引用符で囲まれているためです。バックスラッシュがその魔法を失うため、単一引用符で囲まれている場合、問題は発生しません。詳細については、「単一引用符で囲まれた文字列と二重引用符で囲まれた文字列のバックスラッシュ?」を参照してください。

于 2013-02-14T13:07:31.783 に答える
0

あなたが本当に持っているなら"path\to\something"(私は疑います)、その文字列にはすでにタブとスペースがあります。そして、あなたが本当に望むなら"path\to\something"(私も疑います)、何もする必要はありません。あなたはすでにそれを持っています。

あなたが実際に持っている場合'path\to\something'(私は可能性が高いと思います)、バックスラッシュをエスケープ文字として解釈していません。そして、あなたが実際に望むのであれば'path\to\something'(私はその可能性が高いと思います)、何もする必要はありません。あなたはすでにそれを持っています。

于 2013-02-14T13:13:08.707 に答える