tob*_*b88 4 ruby ruby-on-rails ruby-on-rails-3
我有以下3个字符串......
a = "The URL is www.google.com"
b = "The URL is google.com"
c = "The URL is http://www.google.com"
Run Code Online (Sandbox Code Playgroud)
Ruby的URI提取方法只返回第三个字符串中的URL,因为它包含http部分.
URI.extract(a)
=> []
URI.extract(b)
=> []
URI.extract(c)
=> ["http://www.google.com"]
Run Code Online (Sandbox Code Playgroud)
如何在所有3个实例中创建检测和返回URL的方法?
Suc*_*oir 11
使用正则表达式:
这是一个适用于大多数情况的基本方法:
/(https?:\/\/)?\w*\.\w+(\.\w+)*(\/\w+)*(\.\w*)?/.match( a ).to_s
Run Code Online (Sandbox Code Playgroud)
这只会获取字符串中的第一个url并返回一个字符串.
这个问题没有完美的解决方案:它充满了边缘情况.但是,您可以使用Twitter使用的正则表达式从推文中提取URL来获得足够好的结果(剥离额外的前导空格留作练习!):
require './regex.rb'
def extract_url(s)
s[Twitter::Regex[:valid_url]]
end
a = "The URL is www.google.com"
b = "The URL is google.com"
c = "The URL is http://www.google.com"
extract_url(a)
# => " www.google.com"
extract_url(b)
# => " google.com"
extract_url(c)
# => " http://www.google.com"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |