在ruby中如何删除ip地址的最后一部分

时间:2016-01-27 13:56:34

标签: ruby

我是红宝石的新手。

我有一个ip地址,我需要IP地址的最后一部分。

e.g。

208.68.38.12变为208.68.38

我如何在红宝石中做到这一点?

7 个答案:

答案 0 :(得分:5)

可以这样做:

ip = "208.68.38.12"
ip.split(".")[0...-1].join(".")
#=> "208.68.38"

如果你一步一步走,上面使用的代码行是不言自明的。这里:

ip.split(".") # splitting string on `.` so we have an Array
#=> ["208", "68", "38", "12"]
ip.split(".")[0...-1] # taking 0th to n-1 th element of Array (-1 represents last element when size is unknown)
#=> ["208", "68", "38"]
ip.split(".")[0...-1].join(".") # finally joining the Array over `.`
#=> "208.68.38"

答案 1 :(得分:3)

又一个版本:

ip = "208.68.38.12"
ip[0...ip.rindex('.')] # => "208.68.38"

答案 2 :(得分:1)

尝试:

"208.68.38.12".split('.')[0,3].join('.') #=> "208.68.38"

答案 3 :(得分:1)

ip = '208.68.38.12'
ip[/.*(?=\.\d+\z)/]
#⇒ "208.68.38"

这里我们在正则表达式中使用String#[]和正向前瞻,以省略结果中的最后一个点和后面的数字。

顺便说一句,有各种各样的宝石可以处理IP,例如: g。:https://github.com/deploy2/ruby-ip

答案 4 :(得分:0)

假设您可以依赖格式良好的IPv4地址:

ip.sub(/\.[^.]*\z/, '')

答案 5 :(得分:0)

ip = ip.split('.')[0..-2].join('.')

答案 6 :(得分:0)

最简单的方式,在我看来:

"208.68.38.12"[/(\.?\d+){3}/]