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
相关产品推荐
相关产品推荐

