Получить идентификатор из строки с помощью Ruby - PullRequest
0 голосов
/ 10 декабря 2010

У меня есть такие строки:

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

Как получить из него идентификаторы (205193, 183863, 1003) с помощью Ruby * * 1013

Ответы [ 5 ]

4 голосов
/ 10 декабря 2010

Просто скажи 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+/] }
3 голосов
/ 10 декабря 2010

также может сделать что-то подобное

"/detail/205193-foo-var-bar-foo.html".gsub(/\/detail\//,'').to_i
 => 205193
1 голос
/ 10 декабря 2010

Одним из простых способов сделать это было бы удалить часть /detail/ вашей строки, а затем просто вызвать to_i для того, что осталось:

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

1 голос
/ 10 декабря 2010
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.

0 голосов
/ 10 декабря 2010
s = "/detail/205193-foo-var-bar-foo.html"
num = (s =~ /detail\/(\d+)-/) ? Integer($1) : nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...