2

私はここで途方に暮れていますが、Luaのgsubにますます慣れてきています。これをより効率的に行うためのより良い方法がおそらくあり、それが私が探しているものです。私がやりたいのは変更です:

\(port Planes)9e;\(enter pool)n2euw

の中へ

port Planes;run 9e;enter pool;run n2euw

簡単そうに見えますが、完全に空白を描いています。私はおそらくそれを部分的に使い果たしたと考えることができますが、それは本当に言い訳ではありません。私がそれを持っている方法は次のとおりです。

string.gsub(variable, ";","\(")
string.gsub(variable, "\(", ";")
string.gsub(variable, ")",";run")
string.gsub(variable, ";;",";")

しかし、私には、それはかなりずさんなように見え、私が望むほど効率的ではありません。また、「)」が行を終了し、「;」を置く場合にも問題が発生します。そこに、それは私が欲しいものではありません。これを整理してより効率的にすることができる、Luaに精通している誰かの専門知識をいただければ幸いです。すべてが言われ終わったら、それを関数に入れます。ありがとう!

編集:それをテストすると、とにかく機能しません...そしてそれを機能させるために使用する適切なパターンマッチングシーケンスを理解することはできません...

4

1 に答える 1

2

あなたが持つことができる可能な組み合わせについてもっと知らなければ、これがすべてのインスタンスで機能するとは言えませんが、それは出発点を与えるはずです:

string.gsub(variable,"\\%((.-)%)","%1;run ")
string.gsub(variable,";run $","")

最初のgsubは、括弧内のコマンドを返し、括弧を削除し、最後に';run'を追加します。

2つ目は、文字列の終わりが'; run'であるかどうかを確認し、そうである場合はそれを置き換えることです。

パターンの概要については、次の記事も確認してください: http ://www.lua.org/pil/20.2.html

于 2011-10-10T03:52:02.460 に答える