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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:24:23