我是红宝石的新手。
我有一个ip地址,我需要IP地址的最后一部分。
e.g。
208.68.38.12变为208.68.38
我如何在红宝石中做到这一点?
答案 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#[]
和正向前瞻,以省略结果中的最后一个点和后面的数字。
答案 4 :(得分:0)
假设您可以依赖格式良好的IPv4地址:
ip.sub(/\.[^.]*\z/, '')
答案 5 :(得分:0)
ip = ip.split('.')[0..-2].join('.')
答案 6 :(得分:0)
最简单的方式,在我看来:
"208.68.38.12"[/(\.?\d+){3}/]