可以包含多个数字的字符串 - 如何提取最长的数字?

时间:2011-05-06 10:51:15

标签: ruby regex

我有一个字符串

  • 至少包含一个数字
  • 可以包含多个数字

一些例子是:

https://www.facebook.com/permalink.php?story_fbid=53199604568&id=218700384
https://www.facebook.com/username_13/posts/101505775425651120
https://www.facebook.com/username/posts/101505775425699820

我需要一种从字符串中提取最长数字的方法。因此,对于上面的3个字符串,它将提取

53199604568
101505775425651120
101505775425699820

我该怎么做?

3 个答案:

答案 0 :(得分:5)

#get the lines first
text = <<ENDTEXT
https://www.facebook.com/permalink.php?story_fbid=53199604568&id=218700384
https://www.facebook.com/username_13/posts/101505775425651120
https://www.facebook.com/username/posts/101505775425699820
ENDTEXT
lines = text.split("\n")

#this bit is the actual answer to your question
lines.collect{|line| line.scan(/\d+/).sort_by(&:length).last}

请注意,我在这里将数字作为字符串返回。您可以使用to_i

将它们转换为数字

答案 1 :(得分:0)

解析列表(获取int数组),然后使用Max函数。 array.Max for syntax。

答案 2 :(得分:0)

s = "https://www.facebook.com/permalink.php?story_fbid=53199604568&id=218700384"
s.scan(/\d+/).max{|a,b| a.length <=> b.length}.to_i