这是一种将字符串转换为ips范围的方法。
def convert_to_range(ip)
arr = ip.split('.')
ndx = arr.index { |s| s =~ /-/ }
f,l = arr[ndx].split('-')
(f..l).map { |s| [*arr.first(ndx), s, *arr[ndx+1..-1]].join('.') }
end
convert_to_range("24.53.94-105.241")
#=> ["24.53.94.241", "24.53.95.241", "24.53.96.241", "24.53.97.241",
# "24.53.98.241", "24.53.99.241", "24.53.100.241", "24.53.101.241",
# "24.53.102.241", "24.53.103.241", "24.53.104.241", "24.53.105.241"]
convert_to_range("24.53-58.105.241")
#=> ["24.53.105.241", "24.54.105.241", "24.55.105.241", "24.56.105.241",
# "24.57.105.241", "24.58.105.241"]
convert_to_range("24-26.58.105.241")
#=> ["24.58.105.241", "25.58.105.241", "26.58.105.241"]
convert_to_range("26.58.105.241-248")
#=> ["26.58.105.241", "26.58.105.242", "26.58.105.243", "26.58.105.244",
# "26.58.105.245", "26.58.105.246", "26.58.105.247", "26.58.105.248"]
需要更多细节。你可以在数据库中添加任何你想要的列吗?还是你不得不使用它现有的格式?你到目前为止还尝试过什么吗? – Beartech
你也可以说,不是像第2行那样的单个条目,你可以有75个条目都有'哈佛| [email protected] | 34.24.123。*'每个IP的线路从.123到.198?您需要提供数据在数据库中的外观示例。 – Beartech
最后但并非最不重要,你有一些八位字节的'*'。这是否意味着你需要每一个0-255的条目? – Beartech