使用Ruby从字符串中获取id

时间:2010-12-10 19:45:21

标签: ruby regex string

我有这样的字符串:

  • “/细节/ 205193-FOO-VAR-BAR-foo.html”
  • “/细节/ 183863-解析-foo.html”
  • “/细节/ 1003-BAR-FOO-一个bar.html”

如何使用 Ruby 从中获取ID(205193,183863,1003)?

5 个答案:

答案 0 :(得分:4)

只需说s[/\d+/]


[
 "/detail/205193-foo-var-bar-foo.html",
 "/detail/183863-parse-foo.html",
 "/detail/1003-bar-foo-bar.html"
].each { |s| puts s[/\d+/] }

答案 1 :(得分:3)

也可以做这样的事情

"/detail/205193-foo-var-bar-foo.html".gsub(/\/detail\//,'').to_i
 => 205193

答案 2 :(得分:1)

regex = /\/detail\/(\d+)-/
s = "/detail/205193-foo-var-bar-foo.html"
id = regex.match s  # => <MatchData "/detail/205193-" 1:"205193">
id[1]               # => "205193"
$1                  # => "205193"

MatchData对象将在第一个元素中存储字符串的整个匹配部分,并从第二个元素开始存储任何匹配的子组(取决于有多少匹配的子组)

此外,Ruby为$1提供了最近匹配的子组的快捷方式。

答案 3 :(得分:1)

一种简单的方法是删除字符串的/detail/部分,然后只留下遗留的to_i

"/detail/1003-bar-foo-bar.html".gsub('/detail/','').to_i # => 1003

答案 4 :(得分:0)

s = "/detail/205193-foo-var-bar-foo.html"
num = (s =~ /detail\/(\d+)-/) ? Integer($1) : nil