Lua - 获取单词之后的所有内容

有一个 if 语句如下: if( reciewed_message == "video " ) then

我需要将 'video' 之后的所有文本获取到一个字符串中。

例如,对于字符串 reciewed_message == "video some music video",我需要从 reciewed_message 中获取 some music video 作为搜索参数

点赞
用户7652095
用户7652095

你可以使用string.findstring.sub来完成。

string.find会在字符串中找到第一个查询值的起始位置和终止位置。 string.sub会返回你需要的字符串中从指定位置开始的子字符串。

local received_message = "video some music video"
local query = "video"

-- 第一个参数是起始位置,我们实际上希望得到单词结束的位置,所以我们忽略起始位置使用 '_'
local _, len = string.find(received_message, query)

-- 由于子字符串是从零开始计数的,所以我们必须将长度加1。
local search = string.sub(received_message, len + 1)

print(search)

你也可以创建一个函数,这样方便你多次使用该功能。

function search_query(message, query)
    local _, len = string.find(message, query)

    return string.sub(message, len + 1)
end

-- 使用方法:
print(search_query("video some music video", "video"))
2020-05-13 20:14:50
用户107090
用户107090

使用带有捕获组的 string.match

s="video some music video"
print(s:match("video (.*)$"))

将字符串 s 与模式 "video (.*)$" 进行匹配,并返回第一个匹配项中捕获的子字符串,即 "some music video"

2020-05-13 20:25:15