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

Lua中string.gsub返回意外值求助:数字5来源不明

Lua string.gsub 返回值解析

Lua 的 string.gsub 函数有个容易被忽略的特性:它执行替换操作后会返回两个值:

  • 第一个是替换完成后的字符串
  • 第二个是本次操作中实际发生替换的次数

针对你的测试案例分析:

  • 原字符串 "spawn10" 里,%D 匹配所有非数字字符,具体是 s、p、a、w、n 这5个字符,所以替换次数是5次。
  • 执行 print(string.gsub("spawn10", "%D", "")) 时,print 会把两个返回值都输出,也就是替换后的字符串 "10" 和替换次数 5,所以你看到的输出是 10 5。

关于 print(tonumber(string.gsub("spawn10", "%D", ""))) 的疑问:

这里你提到的返回5应该是误解。tonumber 函数仅接收 string.gsub 返回的第一个值(即 "10"),转换后得到整数 10,正常情况下 print 应该输出 10。如果实际输出是5,大概率是代码书写出现了错误,比如误将替换次数作为参数传给了 tonumber。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:16:16