這是一種將字符串轉換爲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