如何使用Lua将字符串中最后一个点号替换为下划线
Lua 替换字符串中最后一个点号为下划线的实现
核心方案基于Lua原生字符串模式匹配实现,无需依赖额外库,性能和简洁度都最优。
注意:Lua模式中.是匹配任意单字符的魔法字符,匹配字面量点号必须用%转义为%.,这也是多数参考其他字符替换方案失效的核心原因——逗号等普通字符不需要转义,直接匹配即可,点号属于特殊字符必须转义。
通用实现代码
function replace_last_char(s, old_char, new_char) -- (.*)会贪婪匹配到最后一个目标字符前的所有内容,再捕获目标字符后的剩余内容 local prefix, suffix = string.match(s, "(.*)%" .. old_char .. "(.*)") -- 未找到目标字符时直接返回原串 if not prefix then return s end return prefix .. new_char .. suffix end
测试用例验证
对应给出的两个测试场景,运行结果完全符合预期:
-- 测试1 local x = "W1-9007-abc_1.0.ns" x = replace_last_char(x, ".", "_") print(x) -- 输出: W1-9007-abc_1.0_ns -- 测试2 local s = "W1-9007-abc_1.0.0.ns" s = replace_last_char(s, ".", "_") print(s) -- 输出: W1-9007-abc_1.0.0_ns
边界情况处理
- 字符串中不存在目标点号时,直接返回原字符串,无运行报错
- 点号出现在字符串首尾时也能正常处理,例如输入
".test"会输出"_test",输入"test."会输出"test_"
内容的提问来源于stack exchange,提问作者teedak8s
相关产品推荐
相关产品推荐

