【问题标题】:How to parse a resource for the ID in ruby如何在ruby中解析ID的资源
【发布时间】:2014-10-02 19:19:04
【问题描述】:

我有一个相对的 URI / 资源:

"/v1/threads/110408889879497140/"

我只想解析出 ID(此字符串中的最终数字)。

希望正则表达式以外的东西:)

【问题讨论】:

  • 在'/'上分割并取数组的最后一个元素?
  • @Matt 是正确的,但你为什么要避免使用正则表达式?像#scan 这样的方法也可以相当容易地完成这项任务。
  • 不要害怕正则表达式。如果您知道如何有效地使用它们,它们会非常方便,而且每一点练习都会有所帮助。

标签: ruby regex parsing uri


【解决方案1】:
a = "/v1/threads/110408889879497140/"
a.split('/').last

你也可以用 rpartition 来做:

"/v1/threads/110408889879497140/".rpartition('threads/').last.chop

将扫描与正则表达式一起使用:

a.scan(/\d{5,}/)

如果您想在没有正则表达式的情况下隔离字符串中的数字,您可以使用数字的 ASCII 范围从 48 到 57 的事实并执行以下操作:

a = "/v1/threads/110408889879497140/"
a.each_char{ |c| a.delete!(c) unless c.ord.between?(48, 57) }
p a #=> 1110408889879497140

【讨论】:

  • 你的最后一个例子有三个首字母 1。
  • 那是因为 v1.我会推荐扫描方法作为最可靠的方法。
【解决方案2】:

URL 只是一个协议名称,后跟一个文件路径,因此请使用 File.basename,它旨在处理文件路径:

File.basename("/v1/threads/110408889879497140/")
# => "110408889879497140"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2017-11-18
    • 2020-07-19
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多