22

パス付きの標準の Windows ファイル名があります。ファイル名、拡張子、およびパスを文字列から分割する必要があります。

私は現在、文字列を最後から逆方向に読んで を探しています。拡張子を切り捨て、最初の \ でパスを取得します。

Lua パターンを使用してこれを行うことができると確信していますが、文字列の右側から作業すると失敗し続けます。

例えば。c:\temp\test\myfile.txt が返されるはずです

  • c:\一時\テスト\
  • myfile.txt
  • TXT

これが重複している場合は事前にお詫び申し上げますが、他の言語の例はたくさん見つかりましたが、Lua の例は見つかりませんでした。

4

3 に答える 3

38

Windows と Unix のパスで動作し、ドットのないファイル (または複数のドットを含むファイル) も処理する改良版を次に示します。

= string.match([[/mnt/tmp/myfile.txt]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"/mnt/tmp/" "myfile.txt"    "txt"

= string.match([[/mnt/tmp/myfile.txt.1]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"/mnt/tmp/" "myfile.txt.1"  "1"

= string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"c:\\temp\\test\\"  "myfile.txt"    "txt"

= string.match([[/test.i/directory.here/filename]], "(.-)([^\\/]-%.?([^%.\\/]*))$")
"/test.i/directory.here/"   "filename"  "filename"
于 2012-08-30T06:40:20.503 に答える
18
> return string.match([[c:\temp\test\myfile.txt]], "(.-)([^\\]-([^%.]+))$")
c:\temp\test\   myfile.txt  txt

これはまさにあなたが望むことをするようです。

于 2011-03-09T09:16:56.257 に答える
0

Luaで文字列を分割しますか?

そこにはテーブル関数への文字列がいくつかありますが、「\」をフォルダー名に入れることはできないため、「\」を分割して、インデックス1がドライブで最後のインデックスがファイルであるテーブルになります。

于 2012-08-30T01:16:04.103 に答える