【问题标题】:Ruby programming: How to truncate IP address?Ruby 编程:如何截断 IP 地址?
【发布时间】:2015-10-14 12:45:41
【问题描述】:

出于各种目的,我发现自己需要截断 IP 地址,我需要将程序中的 IP 地址从 (xx.x.x.x) 更改为 (xx.x.x.1),方法是更改​​最后一个“。”之后的最后一个数字。将字符串中的值设为 1。

我认为这可以通过将字符串从最后截断到最后的“.”并在其末尾添加“1”来实现,或者以某种方式通过命令程序更改字符串值来实现在最后的“。”之后等于 1 - 我都不知道该怎么做。

我看过各种关于在 Ruby 中截断和更改字符串的教程,但似乎没有一个涵盖如此复杂的内容。

简而言之,我的问题:

- 如何更改最后一个“。”之后的最后一个数字的值。将我的 IP 地址中的值设置为 1(使用第 2 段中的上述任一方法)?

- 这是否需要将变量类从字符串更改为 int 等?

提前谢谢你。

【问题讨论】:

  • 你试过什么?另外,为什么最后要一个 1 ?子网末尾用零/es 表示。
  • 我会使用正则表达式,但找到点的最后一个索引也应该可以,尽管不太优雅

标签: ruby string truncate truncated


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2011-03-13
    • 2011-03-26
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多