1

我有许多以下格式的字符串。只有最后一个“/”之后的部分不同......

"http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

我只需要捕获最后一个“/”之后的部分。

任何帮助表示赞赏。

4

3 回答 3

6

str.split('/').laststr你的字符串在哪里

于 2012-12-12T14:42:16.000 回答
3

不需要时不要使用正则表达式

s = "http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

s.split('/').last # => "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"
于 2012-12-12T14:42:43.700 回答
3

/如其他答案所示,拆分字符串是一种方法。

URL 基本上是文件名,因此您也可以使用File.basename

File.basename('http://example.com/foo')
=> "foo"

或者,在您的情况下:

File.basename("http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s")
=> "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

从技术上讲,正确的做法是将 URL 原样处理,并使用旨在做到这一点的工具将其分解:

require 'uri'
uri = URI.parse("http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s")
File.basename(uri.path)
=> "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"

但是,以另一种方式进行操作非常简单,并且通常是安全的。

于 2012-12-12T15:00:11.533 回答