我有这样的字符串:
如何使用 Ruby 从中获取ID(205193,183863,1003)?
答案 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