lua - 如何在 Lua 中用一个单词替换多个符号?

标签 lua replace

我必须将这些字符“①②③④⑤⑥⑦⑧⑧⑨⑩”全部替换为“\item”。

我用过这段代码:

    stra = string.gsub(text, "①", "\\item")
    strb = string.gsub(stra, "②", "\\item")
    strc = string.gsub(strb, "③", "\\item")
    strd = string.gsub(strc, "④", "\\item")
    stre = string.gsub(strd, "⑤", "\\item")

但是,这是非常冗长的。有没有更简单的方法来替换所有这些项目?

最佳答案

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 manual有关范围和一般 Lua 模式的信息。

你也可以很花哨:

text = string.gsub(text,
    "\266\145([\160-169])",
    function(c)
        return "\\item"..(string.byte(c)-160+1)
    end
)

这会将变成\item1变成\item2,等等。

关于lua - 如何在 Lua 中用一个单词替换多个符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10059427/

相关文章:

java - 使用 luaj 将参数传递给 lua 函数

lua - Lua 中混合类型的相等运算符

mysql - 如何搜索和替换数据库中字符串的所有实例?

lua 重载 : possibilities?

lua - 从lua字符串中删除所有非字母数字字符

为 SWIG 创建类型映射,以便 C 函数可以返回 Lua 表

javascript - 如何替换 Javascript 中的正则表达式子字符串匹配?

javascript - 替换本地字符并将其与变量进行比较

javascript - GreaseMonkey脚本重写图片链接

javascript - JavaScript 函数中的拆分和替换