3

Lua は初めてなので、演算子の部分を学習しています。Lua で文字列を操作するワイルドカード文字はありますか?

私はPHPのバックグラウンドから来ており、基本的にこれをコーディングしようとしています:

--scan the directory's files
for file in lfs.dir(doc_path) do

     --> look for any files ending with .jpg
     if file is like ".jpg" then
       --do something if any files ending with .JPG are scanned
     end

end

ディレクトリ内のファイルをループしているときに、JPG ファイルを探していることがわかります。文字列を検索するためのパーセント記号またはアスタリスク文字に慣れています。しかし、おそらくルアは別の方法を持っていますか?

また、「if file is like.......」という文で完全に推測しています。

4

1 に答える 1

3

文字列がパターンstring.match()に一致するかどうかをテストする関数が必要です。

これがあなたの例の書き直しです(テストされていません):

--scan the directory's files
for file in lfs.dir(doc_path) do

     --> look for any files ending with .jpg
     if file:match "%.jpg$" then
       --do something if any files ending with .JPG are scanned
     end

end

この表記法は、メソッド呼び出し構文 sugar を使用しfile:match "%.jpg%"て関数string.matchを呼び出します。これは、すべての文字列値がstringデフォルトでメタテーブルとして設定されているため機能します。表現を簡単にするために、唯一のパラメーターを囲む括弧も削除しました。

パターンは、末尾の によって文字列の末尾に固定され、で引用することによって$リテラルをテストします。ただし、パターンでは大文字と小文字が区別されるため、これは拡張子がすべて小文字のファイルにのみ一致します。.%

大文字と小文字を区別しないようにするための最も簡単な答えは、の呼び出しの前に へのfile:lower:match"%.jpg$"呼び出しを連鎖させてテストする前に、ファイル名の大文字と小文字を折り畳むことです。または、どちらの場合も明示的に各文字に一致するようにパターンを書き直すことができます。string.lower()match"%.[Jj][Pp][Gg]$"

于 2012-07-20T23:58:35.200 に答える