我想将两个单独的变量设置为字符串中的两个不同数字。
我使用了一个类似“ 100,125”的字符串,并且能够获得两个数字,但是一旦我将该字符串更改为包含小数(例如“ 100.172,125.181”),它将返回小数之后的数字。
local x, y = string.match("100,125", "(%d+),(%d+)")
--this code works, making x = 100 and y = 125
但是
local x, y = string.match("100.134,125.122", "(%d+),(%d+)")
--this did not work correctly
使用后一种方法,我最终将变量x和y设置为小数点后的数字。我认为我应该将字符串重新格式化为“ 100.1x125.5”,但是我不确定。谢谢,很抱歉初学者的问题
答案 0 :(得分:1)
%d
仅匹配0到9之间的数字。您也希望匹配小数点,因此您应该使用[%d.]
设置来匹配任何数字或期间。
因此将模式更改为以下内容:
local x, y = string.match("100.134,125.122", "([%d.]+),([%d.]+)")
print(x)
print(y)
这可以正确打印:
100.134
125.122
答案 1 :(得分:0)
您可能要安装split
rock:
> split = require("split")
> s = "100.134,125.122"
> x,y = table.unpack(split.split(s, ","))
> x
100.134
> y
125.122