【问题标题】:Parsing URL parameters in eLUA在 eLUA 中解析 URL 参数
【发布时间】:2017-04-19 08:23:19
【问题描述】:

假设我有一个类似的 URL:http://ip/rgb/color?R=200&G=100&B=300

如何将 R、G 和 B 的值放入单独的变量中?我已经研究了 g.sub 但我仍然完全不明白,解释只是代码,没有进一步说明任何事情是如何工作的。

【问题讨论】:

    标签: parsing url lua gsub


    【解决方案1】:

    使用 string.match 和模式:

    local url = "http://ip/rgb/color?R=200&G=100&B=300"
    local r,g,b= url:match("R=(%d+)&G=(%d+)&B=(%d+)")
    print (r,g,b)
    

    【讨论】:

    • 这是最简单的方法。但是 %d+ 做了什么?还有 lua 怎么知道哪个值进入哪个变量?
    • %d+ - 表示一位或多位数字,变量按顺序将()之间的符号变为r,g,b。
    【解决方案2】:

    这是一个更通用的解决方案,将字段和值存储在表中,而无需知道字段的名称或顺序:

    S=[[
    https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjGpbabuLDTAhUD5iYKHe2LAzcQFgglMAA&url=http%3A%2F%2Fwww.eluaproject.net%2F&usg=AFQjCNHWegTT2pHkN8L75iW2UZBA5_pOMQ&sig2=VxlaLWBWD81Hp8KF8ijw1Q
    ]]
    
    t = {}
    S = S:match(".-?(.*)$") .. "&"
    for k,v in S:gmatch("(.-)=(.-)&") do
        t[k]=v
        print(k,v)
    end
    

    它首先获取参数列表(第一个 ? 之后的所有内容),在末尾添加 & 以保持一致性。那么所有键值对的格式为 key=value&

    将此代码应用于您的网址,您将获得t.Rt.Gt.B

    【讨论】:

      猜你喜欢
      • 2022-12-20
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2018-12-21
      • 2011-01-15
      相关资源
      最近更新 更多