local symbols_trans = {
["\226\145\160"]--[[①]] = "\\item1",
["\226\145\161"]--[[②]] = "\\bananas",
["\226\145\162"]--[[③]] = "\\cactus",
["\226\145\163"]--[[④]] = "\\etc",
["\226\145\164"]--[[⑤]] = "\\item5",
["\226\145\165"]--[[⑥]] = "\\item6",
["\226\145\166"]--[[⑦]] = "\\item7",
["\226\145\167"]--[[⑧]] = "\\item8",
["\226\145\168"]--[[⑨]] = "\\item9",
["\226\145\169"]--[[⑩]] = "\\item10",
}
text = string.gsub(text, "(\266\145.)", symbol_trans)
をそれとも、"\\item"
でそれらすべてを置き換える場合:
あなたの特定のケースについては
、あなたは常にこの操作を行うことができ
text = string.gsub(text,
"\266\145[\160-\169]",
"\\item"
)
[\160-\169]
は[\160\161\162\163\164\165\166\167\168\169]
と同等です。 範囲と一般的なLuaパターンについては、Lua manualを参照してください。
また、空想のようになります。
text = string.gsub(text,
"\266\145([\160-169])",
function(c)
return "\\item"..(string.byte(c)-160+1)
end
)
は、このように
\item2
に
\item1
、
②
へ
①
を回す、となります。
LuaはUnicodeを処理しないことに注意してください。それらがUTF-8文字列であっても、Luaはそのことを知らないでしょう。各UTF-8コードユニットをそのまま検索します。元のコードが働いたのは、Luaがコードユニットの* sequence *を探していたからです。あなたが上に投稿したものは順番に各コードユニットを探します。 –