我有许多以下格式的字符串。只有最后一个“/”之后的部分不同......
"http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"
我只需要捕获最后一个“/”之后的部分。
任何帮助表示赞赏。
str.split('/').last
str
你的字符串在哪里
不需要时不要使用正则表达式
s = "http://www.google.com/calendar/feeds/user_name%40gmail.com/public/basic/_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"
s.split('/').last # => "_8gq3ecpo6gp3ib9n8h0jeb9k8l13ab9o85346b9k8gqk4g9h74s4aea26s"
/
如其他答案所示,拆分字符串是一种方法。
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"
但是,以另一种方式进行操作非常简单,并且通常是安全的。