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

如何从多小数点版本字符串中仅去除末尾的零?

多小数点版本字符串末尾零的精准去除(Lua实现)

需求说明

仅从带多个小数点的版本字符串中移除末尾连续的.0/.00...片段,需满足两个限制:

  • 不能删除非零数字之间的零(如1.0.2中的.0需保留)
  • 不能删除最后一个非零数字前的零(如1.2.3.0.4中的.0需保留,仅删除其后的.0.0)

原代码问题分析

你当前使用的Lua正则"(%.0).-$"存在逻辑错误:

  • .-$会匹配从第一个.0开始到字符串结尾的所有内容,导致直接删除了1.2.3.0.4.0.0中3之后的所有内容,得到不符合预期的1.2.3
  • 未考虑连续的.0片段匹配,仅处理单个.0后就删除后续所有内容

正确Lua实现

要实现和参考JavaScript代码"1.0.2.0.0".replace(/(\.0+)+$/, "")等价的效果,可使用以下Lua代码:

local version = "1.2.3.0.4.0.0"
-- 匹配末尾连续的 ".0" 或 ".000..." 片段组
local result, pCount = version:gsub("(%.0+)+$", "")
print("result = " .. result .. " / pCount = " .. pCount)
-- 输出: result = 1.2.3.0.4 / pCount = 1

正则逻辑解释

  • %.0+:匹配一个小数点后跟随一个或多个零(如.0、.000)
  • (...):将上述片段作为一个分组
  • +:匹配一个或多个该分组(即连续的.0/.00片段,如.0.00)
  • $:限定匹配必须位于字符串结尾,确保只处理末尾的零片段

边界情况测试

  • 输入"1.0.2.0.0" → 输出"1.0.2"
  • 输入"1.0.0.0" → 输出"1"
  • 输入"1.2.0.3.0" → 输出"1.2.0.3"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:05:17