htmlソースのutf8 htmlエンティティを実際の文字に置き換えたい。私は "エンティティ"置換テーブルを持っています。このテーブルにはコードがついています。このコードを実行すると、CPUを最大100%利用します。私のCPUを100%利用している私のルアコード
最初のループをより良い方法で書き直す方法を教えてください。私はLuaの文字列が不変であることを理解しているので、データ変数のコピーがたくさんあると思います。これが理由です。
local entities = {
{["char"]="!", ["utf"]="!"},
{["char"]='"', ["utf"]="""},
{["char"]="#", ["utf"]="#"},
{["char"]="$", ["utf"]="$"},
{["char"]="%", ["utf"]="%"},
{["char"]="&", ["utf"]="&"},
{["char"]="'", ["utf"]="'"},
-- +312 rows more
}
local function clear_text(data)
for _, e in ipairs(entities) do
data = string.gsub(data, e.utf, e.char)
end
return data
end
-- this is just for testing ... replacement in many html sources
for i=1,200 do
local data = some_html_page_source()
clear_text(data)
end
しかし、それは逆です。 utfの値をキーにします。それらは複数の文字を取ります。 –
確かに。私はその質問を完全に間違って読んだ。これは難しくなりますが、あなたは同じ原則を使用することができます。 –
標準的な正規表現ではないので、私はルアのパターンマッチングを読む時間を与えてください。 –