【问题标题】:How to read a specific part of a string?如何读取字符串的特定部分?
【发布时间】:2022-01-24 21:57:54
【问题描述】:

本质上,我需要的是读取字符串的某个部分。

例子:

我有一个包含“12 31”的字符串。 但是,我需要将这些数字放入单独的变量中。只需将 12 分类为变量 A,将 31 分类为变量 B。

我该怎么办?

【问题讨论】:

    标签: lua


    【解决方案1】:

    你可以使用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 模式中的那些( )“事物”被称为捕获顺便说一句。
    • 我根据您的评论改进了答案。
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2017-11-15
    相关资源
    最近更新 更多