Ruby や Perl のように、Lua に split() 関数がパッケージ化されているとは思えません。
この男が Perl の分割関数の lua バージョンを作成したことがわかりました:
http://lua-users.org/lists/lua-l/2011-02/msg01145.html
引数の前に 1 単語しかなく、その単語にスペースが含まれていないことを保証できる場合は、その行を読み取り、分割関数を実行し、戻り配列の 1 インデックス値を必要なものとして使用できます。
それもエラーチェックして、予想されるディレクトリ内に「C:\」があることを確認するか、文字列が == から「オン」または「オフ」になっていることを確認してください。ハードコーディングされたインデックス値を使用しているため、期待値のエラー チェックを行うことをお勧めします。想定された値が間違っていることほど悪いことはありません。
エラーが検出された場合は、必ずログに記録するか画面に出力して、それについて知るようにしてください。
これにより、入力された文字列が不適切である可能性があるバグがキャッチされる可能性があります。
私があなたに提案することをモデル化するいくつかの簡単なコード:
line = "directory C:\Program Files\abc\def/";
contents = line.split(" "); --Split using a space
directory = contents[2]; --Here is your directory
if(errorCheckDir(directory))
--Use directory
end
編集: 以下のコメントに応答して、Lua は実際に 0 ではなく 1 でインデックス作成を開始します。また、単にコンテンツ [2] を使用する代わりに、ディレクトリにスペースが含まれている場合 (これはおそらくそうです)、インデックスを除くすべてのコンテンツをループします。 1、ディレクトリを元に戻して、添付する各インデックス間に必要なスペースを追加してください。
したがって、上記の場合、コンテンツ [2] とコンテンツ [3] は、適切なディレクトリを回復するために間にスペースを入れてつなぎ合わせる必要があります。
ディレクトリ = 内容[2].." "..内容[3]
これは、ループを含む関数を使用して簡単に自動化でき、適切なディレクトリを返します。
function recoverDir(contents)
directory = "";
--Recover the directory
for i=2, table.getn(contents) do
directory = directory..contents[i].." ";
end
--strip extra space on the end
dirEnd = string.len(directory);
directory = string.sub(directory,1,dirEnd-1);
return directory; --proper directory
end