如何从url字符串ruby中提取数字

时间:2015-10-23 22:59:17

标签: ruby-on-rails ruby

如何用正则表达式提取字符串的最后一部分?字符串的最后一部分也将是一个3位数字。

"/gdc/md/vin06hdpq8442qocut9aoih8q5j5k43u/obj/185"

4 个答案:

答案 0 :(得分:2)

类似于:/\d+$/应该获得字符串末尾的所有数字

答案 1 :(得分:2)

切片最后3个字符:

str = "/gdc/md/vin06hdpq8442qocut9aoih8q5j5k43u/obj/185"
p str[-3,3] # => "185"

答案 2 :(得分:1)

有许多不同的方法可以实现这一目标。

您可以使用正则表达式匹配所有尾随数字(/\d+$/),或仅匹配最后三个尾随数字(/\d{3}$/),具体取决于您出于某种原因需要的行为有比你预期更多的数字:

str.match(/\d+$/)[0]
#=> "185"

str.match(/\d{3}$/)[0]
#=> "185"

另一种选择是将字符串拆分为数组,使用/作为分隔符,然后抓取最后一个元素(包含过去/之后的所有内容。)

str.split("/").last
#=> "185"

或者您可以使用以下事实:可以使用索引访问子字符串,就像数组一样,并使用它来获取最后三位数字:

str[-3, 3]
#=> "185"

除非你在循环中进行了数千次这样的操作,否则任何性能差异都是微不足道的,所以你可以选择提供最强大和易读性的选项。

请注意,在所有四种情况下,都会返回一个字符串,因此如果您打算将此数字用作整数,则需要先使用#to_i进行转换。

答案 3 :(得分:0)

或两者结合使用str [/ \ d {3} $ /]

或者str [-3 ..- 1]

为这个字符串设置皮肤的方法很多:)