You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中GSUB无空格时无法正常工作的问题求助

Lua文本加密器修复方案

问题根源

原代码用%S+作为匹配模式,这个模式会把连续的非空白字符当成一个整体匹配。比如输入÷=时,整个字符串÷=会被当作一个键去查替换表,但表中没有这个键,所以无法替换;而输入÷ =时,÷和=是两个独立的非空白字符,能分别匹配到替换表中的键,因此正常输出对应结果。

修复代码

把匹配模式从%S+改成%S(匹配单个非空白字符),或者直接用.(匹配任意字符,包含空格),让每个字符单独参与替换:

local text = "÷="

local tdext = text:gsub("%S", {
    ["+"] = "a", ["×"] = "b", ["÷"] = "c", ["="] = "d", ["/"] = "e",
    ["_"] = "f", ["€"] = "g", ["¥"] = "h", ["₩"] = "i", ["!"] = "j",
    ["@"] = "k", ["#"] = "l", ["$"] = "m", ["%"] = "n", ["^"] = "o",
    ["&"] = "p", ["*"] = "q", ["("] = "r", [")"] = "s", ["-"] = "t",
    ["'"] = "u", [":"] = "v", [";"] = "w", [","] = "x", ["?"] = "y",
    ["."] = "z", [" "] = " "
})

print(tdext) -- 输出 "cd"

如果需要兼容空格处理,用.模式更通用,比如输入带空格的文本时,空格会被保留:

local text = "÷= hello!"

local tdext = text:gsub(".", {
    ["+"] = "a", ["×"] = "b", ["÷"] = "c", ["="] = "d", ["/"] = "e",
    ["_"] = "f", ["€"] = "g", ["¥"] = "h", ["₩"] = "i", ["!"] = "j",
    ["@"] = "k", ["#"] = "l", ["$"] = "m", ["%"] = "n", ["^"] = "o",
    ["&"] = "p", ["*"] = "q", ["("] = "r", [")"] = "s", ["-"] = "t",
    ["'"] = "u", [":"] = "v", [";"] = "w", [","] = "x", ["?"] = "y",
    ["."] = "z", [" "] = " "
})

print(tdext) -- 输出 "cd hello j"

效果验证

修改后,无论符号是否连续,每个字符都会被单独匹配替换:

  • 输入÷= → 输出cd
  • 输入÷ = → 输出c d
  • 输入!@#$ → 输出jklm

内容的提问来源于stack exchange,提问作者3dsbru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:25:56