Программирование на Ruby: как обрезать IP-адрес?
В различных целях мне нужно урезать IP-адрес, мне нужно изменить IP-адрес в моей программе с (xx.xxx) на (xx.xx1), изменив последний номер после последнего "." в строке до значения 1.
Я предполагаю, что это может быть достигнуто либо путем усечения строки с самого конца до конечного ".", И добавления "1" в конец ее, либо каким-либо образом, приказав программе изменить строковое значение после последнего "" быть равным 1 - ни один из которых я не знаю, как это сделать.
Я видел различные учебные пособия по усечению и изменению строк в Ruby, однако ни один из них, по-видимому, не охватывает что-то столь же сложное.
Короче мой вопрос:
- Как мне изменить значение последнего номера после финального "." в моем IP-адресе до значения 1 (используя любой из вышеупомянутых методов в пункте 2)?
- Требуется ли изменение класса переменных со строки на int и т. Д.?
Заранее спасибо.
1 ответ
Ruby является объектно-ориентированным языком, а не строковым или целочисленным языком. Вы должны использовать объекты в вашей программе, а не строки или целые числа. (Если, конечно, ваши объекты не являются строками или целыми числами. Но IP-адрес - это не строка или целое число, это IP-адрес.)
Как только вы переключаетесь на использование IP-адресов, ваша проблема становится тривиальной:
require 'ipaddr'
ip = IPAddr.new('12.34.56.78')
(ip & IPAddr.new(255.255.255.0)).succ
# => #<IPAddr: IPv4:12.34.56.1/255.255.255.255>