2

Luamagnetに文字列として送信されているリンクがいくつかあります。これらの磁石は通常、次の形式です。

magnet:?xt=<hashing>&xl=<size>&dn=<name>

ただし、クライアントの違いにより、磁石は次のように生成することもできます。

magnet:?xl=<size>&xt=<hashing>&dn=<name>

xl=このタイプの文字列から、 (純粋な数値である)後、および(英数字の一致である)xt=で構成されるデータをフェッチしたいと思います。%w:%w

現在、これらの値をフェッチするために2つの別々のステートメントを使用しています。これは単一のステートメントで達成できますか/ string.find()

sInput = "magnet:?xt=urn:tree:tiger:ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABC&xl=1234567890123456789&dn=This+Is+The+Name+Of+File.EXT"
local _, _, sHash = sInput:find( "xt=([%w%:]+)" )
local _, _, iSize = sInput:find( "xl=(%d+)" )
4

1 に答える 1

2

すべての値をテーブルにまとめたほうがよいと思います。

local sInput="magnet:?xt=<hashing>&xl=<size>&dn=<name>"
local s=sInput:match("%?(.*)$").."&"
local t={}
for k,v in s:gmatch("(%w+)=(.-)&") do
        t[k]=v
end

で始まるキーに制限する場合は、xを使用しますgmatch("(x%w+)=(.-)&")。それを知っていて、リストの最後の項目にならない場合xtxl、次のように簡単に実行できます。

for k,v in sInput:gmatch("(x%w+)=(.-)&") do
于 2012-10-01T13:48:27.533 に答える