簡體   English   中英

使用Ruby從字符串獲取ID

[英]Get id from string with Ruby

我有這樣的字符串:

  • “ /detail/205193-foo-var-bar-foo.html”
  • “ /detail/183863-parse-foo.html”
  • “ /detail/1003-bar-foo-bar.html”

如何使用Ruby從中獲取ID(205193、183863、1003)?

只是說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+/] }

也可以做這樣的事情

"/detail/205193-foo-var-bar-foo.html".gsub(/\/detail\//,'').to_i
 => 205193
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到最近匹配的子組的快捷方式。

一種簡單的方法是to_i字符串的/detail/部分,然后在剩下的地方調用to_i

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM