2015-10-23 41 views

回答

2

喜欢的东西:/\d+$/应该得到所有数字的字符串

2

就切过去的3个字符的结尾:

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

我liiike很多 – Seal

0

或两者与海峡组合[/ \ d {3} $ /]

或者str [-3 ..- 1]

这么多的方法来皮肤的字符串:)

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进行转换。