2017-02-14 21 views
1

パス区切り文字としてバックスラッシュを使用してWindowsの永遠の問題に悩まされています。私はWindowsのパスをUNIXのパスに変換するLua関数が必要です。WindowsパスをUnixパスに変換するLua関数

  1. 変数にパスを割り当てるには、バックスラッシュをエスケープするなどしてください。

    ファイル名= "P:\\ユーザー\\スクリプト\\ config.lua"

  2. 私は、これは、例えば異なる文字列の区切り文字を使用して行うことができます知っています

    名= [P:\ユーザー\スクリプト\ config.lua]

  3. Iは、単一のバックスラッシュを除去し、またはエスケープシーケンスとして解釈されるかので、私はstring.gsubを使用しないことを知って、 gsubに渡される前に。

Windowsを使用すると、ファイル名に変数を割り当てるときに文字列に単一のバックスラッシュが含まれているなど、問題があります。

filename = arg[0] 
filename = debug.getinfo(2, "S").source:sub(2) 

この文字列をスラッシュ付きのUNIXスタイルの文字列に変換するにはどうすればよいですか?私にとって

function unixpath(filename) 
    if filename~=nil then 

    else 
     return nil 
    end 
end 

print(unixpath(arg[0])) 
print(unixpath(debug.getinfo(2, "S").source:sub(2))) 
print(unixpath([[P:\user\scripts\config.lua]])) 
+0

'io.open([[E:/ TEMP /テストは]])'のLua 5.1とWXP上で動作します - あなたが変換する必要があり、なぜ? Unixはドライブを持っていませんP – FareakyGnome

答えて

2

作品:

$ lua 
Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio 
> w = "c:\\windows\\system32" 
> w 
c:\windows\system32 
> w:gsub("\\", "/") 
c:/windows/system32  2 
+0

Thanks "return filename:gsub(" \\ "、"/")"はすべてのテストケースで動作します。 – Gavin

+0

'gsub'が2の値を返すことを忘れないでください。しばらく時間がかかる – moteus

関連する問題