【发布时间】:2014-05-14 12:26:42
【问题描述】:
我正在尝试更改其中包含端口号的 IP 地址字符串,以便对表格进行排序,示例 IP 字符串:
IP = "120.88.66.99:075"
我可以删除 . 和 : :
IP = string.gsub(IP,'%W',"")
这给了我120886699075,但我想将唯一的: 更改为.,所以它给了我120886699.075
编辑:
实际上我想要的不起作用,因为它没有考虑 .'s 之间的数字数量,所以我想要一种以给定格式对 ip 进行排序的方法,因此一个包含原始 ip 的表字符串可以排序。
编辑 2:
我几乎可以解决这个问题:
function IPToDec(IPs)
local t = {}
local f = "(.-)%."
local l = 1;
local s, e, c = IPs:find(f,1)
while s do
if s ~= 1 or c ~= "" then
table.insert(t,c)
end
l = e+1;
s, e, c = IPs:find(f,l)
end
if l <= #IPs then
c = IPs:sub(l)
table.insert(t,c)
end
if(#t == 4) then
return 16777216*t[1] + 65536*t[2] + 256*t[3] + t[4]
else
return -1
end
end
IP = "120.88.66.99:075"
IP = IPToDec(IP:gsub('%:+'..'%w+',""))
但我必须松开端口才能使其正确排序,理想情况下我想在排序中包含端口号,因为 ip 可能来自同一来源但不同的计算机。
【问题讨论】:
-
为什么需要对表格进行排序? Lua 表可以用任何你喜欢的东西直接索引。也许你可以问一个单独的问题。
-
嗯,我有一个 ip 字符串表,它填充了一个 listview 控件,所以我想对表进行升序和降序排序,然后使 listview 控件排序。
-
请单独提问。
-
为什么? ip 字符串是一个表格元素的事实是无关紧要的,因为它仍然是一个字符串。
-
您的编辑只是想解释背景,还是询问如何解决排序问题。如果是后者,如 lhf 所说,请提出一个单独的问题。
标签: string lua lua-patterns