【发布时间】:2022-01-24 21:57:54
【问题描述】:
本质上,我需要的是读取字符串的某个部分。
例子:
我有一个包含“12 31”的字符串。 但是,我需要将这些数字放入单独的变量中。只需将 12 分类为变量 A,将 31 分类为变量 B。
我该怎么办?
【问题讨论】:
标签: lua
本质上,我需要的是读取字符串的某个部分。
例子:
我有一个包含“12 31”的字符串。 但是,我需要将这些数字放入单独的变量中。只需将 12 分类为变量 A,将 31 分类为变量 B。
我该怎么办?
【问题讨论】:
标签: lua
你可以使用Lua Patterns:
> ExampleString = "12 31"
> ExampleString:match("(%d+)%s+(%d+)")
12 31
> SubString1, SubString2= ExampleString:match("(%d+)%s+(%d+)")
> Number1 = tonumber(SubString1)
> Number2 = tonumber(SubString2)
Pattern expression 看起来很复杂,但实际上很简单。 ( 和) 之间的东西被命名为captures,如果找到就会返回。在这里,我们想要 2 个结果,所以我们有 2 对情侣 ( 和 )。 %d+ 表示我们要查找至少包含 1 个数字的字符串 (+)。
这2个数字之间用空格%s+隔开,至少1个(+)。
综上,我们要提取(Number1)space(Number2)
函数string.match 用于匹配给定的pattern 并返回找到的字符串。最后一步是使用函数tonumber将找到的子字符串转换为Lua数字。
【讨论】:
string 作为变量名是不好的做法。 Lua 模式中的那些( )“事物”被称为捕获顺便说一句。