給定一個文本,我想刪除url部分並留下其他文本。使用ruby從文本中刪除url
例子:
'bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...'
成爲
'bla bla bla... bla bla bla... bla bla bla...'
有任何Ruby構建方法有效地做到這一點?
給定一個文本,我想刪除url部分並留下其他文本。使用ruby從文本中刪除url
例子:
'bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...'
成爲
'bla bla bla... bla bla bla... bla bla bla...'
有任何Ruby構建方法有效地做到這一點?
嘗試用正則表達式:
(?:f|ht)tps?:\/[^\s]+
@Donny Kurnia讓你說你的字符串在變量'str'中,那麼你可以使用@The Mask的正則表達式像這樣:'new_str = str.gsub(/(?:f | ht)tps?:\/[^ \ s] + /,'')'或者如果你想'str'本身改變你可以做'str .gsub!(/(?:f | ht)tps?:\/[^ \ s] + /,'')' – 2011-06-16 09:00:16
@DhruvaSagar上面的答案在我的失敗的地方工作。 @ inbound_text.gsub!(/
我剛剛發現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
我在鐵軌控制檯測試它和它的工作如預期:
remove_uris('bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...')
=> "bla bla bla... bla bla bla... bla bla bla..."
如果有人有更好的/有效的解決方案,我會投票或接受它。謝謝。
text.gsub!(URI_REGEX,'')怎麼辦? – nex 2014-04-14 16:05:25
感謝您的評論,@nex。我會試試看。 – 2014-04-15 12:38:27
請注意,這不起作用100%。考慮以下文字:''تفاصيلتغطية\ n#lexusriyadhlargestglobally \ n#لكزس_الرياض_الأكبر_في_العالم\ nتجدونهاهنا\ nhttp://example.com \ n http://example.com「'阿拉伯文字和表情符號的某些部分被忽略 – mreq 2016-05-13 16:19:39
你能保證網址內不會有空格嗎? – Locksfree 2011-06-16 07:52:19
文本是由用戶輸入的,所以我主要關心的是刪除任何類似於url的內容直到下一個空格。 ''http://bit.ly/帶空格的網址'將變成''帶空格的網址' – 2011-06-16 08:06:51