鉴于文本,我想删除网址部分并留下其他文字。
示例:
'bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...'
成为
'bla bla bla... bla bla bla... bla bla bla...'
是否有任何红宝石构建方法可以有效地执行此操作?
答案 0 :(得分:9)
尝试使用正则表达式:
(?:f|ht)tps?:\/[^\s]+
答案 1 :(得分:4)
我刚刚找到Regular Expression - replace word except within a URL/URI并将代码修改为:
URI_REGEX = %r"((?:(?:[^ :/?#]+):)(?://(?:[^ /?#]*))(?:[^ ?#]*)(?:\?(?:[^ #]*))?(?:#(?:[^ ]*))?)"
def remove_uris(text)
text.split(URI_REGEX).collect do |s|
unless s =~ URI_REGEX
s
end
end.join
end
我在rails控制台中测试它并按预期工作:
remove_uris('bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...')
=> "bla bla bla... bla bla bla... bla bla bla..."
如果有人有更好/更有效的解决方案,我会投票或接受它。感谢。