如何从随机位置的字符串部分获取不确定的数字值?

我正在使用 Lua 解析 API 请求中给出的大字符串序列。接收到的字符串序列看起来像这样:

<stats>+200 股价<br>+100%股价增长<br><stock>+100%股票规模</stock><br>+10%公司收入

因此,例如,我需要获取“股价增长”的数量,以便稍后在我的编码中进行计算。字符串始终以此格式出现,但每个变量的位置可以是随机的。例如,“股价”可能被发送到字符串的开头、中间或结尾,没有知道其位置的模式。

任何提供的帮助将不胜感激!

点赞
用户3832970
用户3832970

似乎可以使用 Lua patterns 来获取你需要的值的几种模式。

请注意,匹配任何数字时使用 %d 速记类,匹配任何空格使用 %s。请注意, % 符号用于转义这些字符,要匹配文字 % 符号,您需要将其加倍为 %%

请参见 Lua 演示

s = [[<stats>+200 Stock Price<br>+150% Stock Price Increase <br><stock>+110% Stock Size</stock><br>+10% Company Revenue]]
print(string.match(s, [[(%d+%%)%s+Stock Price Increase]]) .. " - Stock Price Increase")
print(string.match(s, [[(%d+%%)%s+Stock Size]]) .. " - Stock Size")
print(string.match(s, [[(%d+%%)%s+Company Revenue]]) .. " - Company Revenue")
print(string.match(s, [[(%d+)%s+Stock Price]]) .. " - Stock Price")

输出:

150% - Stock Price Increase
110% - Stock Size
10% - Company Revenue
200 - Stock Price
2017-04-15 19:08:59
用户107090
用户107090

下面是一个不需要知道字段名称的解决方案:

S=[[
<stats>+200 股价<br>+100% 股价增长 <br><stock>+100% 股票规模</stock><br>+10%公司收入
]]

S=S.."<"

for v,k in S:gmatch(">([-+].-)%s+(.-)%s*<") do
    print(k,v)
end

你可以将数据存储在一个表中,而不是打印出来。

2017-04-15 19:22:29