【问题标题】:Find substring between specific characters查找特定字符之间的子字符串
【发布时间】:2016-01-18 21:21:00
【问题描述】:

我不熟悉 Lua 语言,希望得到您的帮助。我正在尝试通过 POST 接收一些值,这些值类似于:

pwd = password
ssid = ssid_name

swstat={string.find(payload,"pwd=")}
swstat1={string.find(payload,"ssid=")}
if swstat[2]~=nil then
    pass=string.sub(payload,swstat[2]+1,#payload)
    ssid=string.sub(payload,swstat1[2]+1,#payload)
    print("Password: "..pass)
    print("SSID: "..ssid)
end

上述代码的实际结果是(我通过网络浏览器发送 ssid=htc 和密码=fr):

Password: fr
SSID: htc&pwd=fr

我只想在一个字符串中输入密码,在另一个字符串中输入 ssid。 所以我的想法是使用以下逻辑搜索字符串: ssid = 在字符串中查找“ssid=”和(“&”或字符串结尾)之间的子字符串 pwd = 在字符串中查找“pwd=”和(“&”或字符串结尾)之间的子字符串

【问题讨论】:

  • pass = payload:match'%f[%C]pwd=(%C+)', ssid = payload:match'%f[%C]ssid=(%C+)'

标签: string lua substring lua-patterns nodemcu


【解决方案1】:

由于payload是有效的查询字符串格式,您可以将相关信息存储在一个表中:

local tData = {}
for sParam, sValue in payload:gmatch "([^=&]+)=([^=&]+)" do
    tData[sParam:lower()] = sValue
end

现在,您将获得 tData 表中的信息:

tData.pwd     -- will have fr
tData.ssid    -- will have htc

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2014-12-07
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多