2015-09-08 2 views
-1

Я хотел бы быть в состоянии сделатьRails: Преобразовать последний п квартет из IPv4 адреса символов подстановки

irb(main):054:0> ip = "192.168.1.255" 
=> "192.168.1.255" 
irb(main):055:0> ip.sub(/\d+$/, '*') 
=> "192.168.1.*" 

за последний п квартеты. например "192.168.1.255" => "192.168.*.*" и т.д.

+0

Не очевидно ли, что он пытался? –

ответ

1

Вы можете разделить внутрибрюшинно на "" и получить массив квартетов.

def wildcard_ip(ip, n) 
    len = ip.split('.').size 
    ip.split('.').each_with_index.map{|q,i| i < len-n ? q : '*'}.join('.') 
end  
1
def wildcard ip, blocks=1 
    ip.split(".")[0..3-blocks].join(".") + ".*" * blocks 
end 

Протестировано

[46] pry(main)> wildcard a 
=> "192.168.0.*" 
[47] pry(main)> wildcard a, 2 
=> "192.168.*.*" 
[48] pry(main)> wildcard a, 3 
=> "192.*.*.*" 

или пойти OOP

class String 
    def wildcard blocks=1 
    self.split(".")[0..3-blocks].join(".") + ".*" * blocks 
    end 
end 
# "192.168.0.1".wildcard => 192.168.0.* 
# "192.168.0.1".wildcard(2) => 192.168.*.* 
# "192.168.0.1".wildcard(3) => 192.*.*.* 

 Смежные вопросы

  • Нет связанных вопросов^_^