【问题标题】:How do I do a reverse to_i?我如何做一个反向to_i?
【发布时间】:2018-05-23 02:26:45
【问题描述】:

我使用的是 Ruby 2.4。如果我的字符串的开头有数字,我可以通过以下方式将值作为整数获取

2.4.0 :003 >   s = "13s"
 => "13s"
2.4.0 :004 > s.to_i
 => 13

但是,如果数字位于字符串的末尾,我如何将它们作为整数获取?例如,在

s13

我在字符串的末尾有“13”,但很明显,.to_i 不会提取那个...

2.4.0 :005 > s = "s13"
 => "s13"
2.4.0 :006 > s.to_i
 => 0

提取字符串末尾数字部分的通用方法是什么?如果字符串是

abcd

我希望数字部分为零。

【问题讨论】:

  • 字符串开头的数字,而不是数字。

标签: ruby string parsing integer


【解决方案1】:

一个解决方案就是这个

"s13".reverse.to_i.to_s.reverse

或者提取字符串末尾的数字

"s13"[/\d+\z/]

【讨论】:

  • 为什么不把它从末端切掉而不是创建一个 MatchData 对象,例如"s13"[/\d+$/] #=> "13"
  • 第二种解决方案是我赞成的解决方案。 (第一个吓到我了:))
  • 也吓坏了。沟#1。仍然需要将 #2 转换为整数,允许字符串不包含数字(例如,如果没有数字,则返回 nil)。
  • @CarySwoveland 我觉得 #2 取决于 OP 也许 0 也可以接受,因为没有数字,并且 OP 已经表示他们知道如何转换为整数,所以我认为这个问题是特定于提取数字
  • 为什么要捕获数字?另外我认为你应该使用\z,它是字符串的结尾,而不是$,它是行尾。
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
相关资源
最近更新 更多