如何在Ruby字符串中的最后一个斜杠(/)之后返回所有内容

Hen*_*rik 31 ruby regex ruby-on-rails

我有一个字符串希望在最后一个之后/返回所有内容.

例如https://www.example.org/hackerbob,它应该返回"hackerbob".

Nik*_* B. 69

我不认为正则表达式是个好主意,看看任务有多简单:

irb(main):001:0> s = 'https://www.facebook.com/hackerbob'
=> "https://www.facebook.com/hackerbob"
irb(main):002:0> s.split('/')[-1]
=> "hackerbob"
Run Code Online (Sandbox Code Playgroud)

当然你也可以使用正则表达式来做,但它的可读性要低得多:

irb(main):003:0> s[/([^\/]+)$/]
=> "hackerbob"
Run Code Online (Sandbox Code Playgroud)

  • +1不使用锤子来驱动螺丝. (4认同)

Lar*_*eth 8

使用正确的工具:

require 'uri'
url = "https://www.facebook.com/hackerbob"
URI.parse(url).path[1..-1]  # => "hackerbob"
Run Code Online (Sandbox Code Playgroud)

  • 我认为这并没有完全回答诸如`example.org/user/hackerbob`之类的URL的问题(这应该导致`hackerbob`).要真正回答这个问题,我们必须做`URI.parse(url).path.split('/')[ - 1]`或其他什么东西,然后就没有真正的优势而只是在第一个分裂字符串地点 (3认同)