2011-06-16 13 views
5

Dado un texto, quiero eliminar la parte de la url y dejar otro texto.Eliminar URL del texto usando ruby ​​

Ejemplo:

'bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...' 

para convertirse en

'bla bla bla... bla bla bla... bla bla bla...' 

¿Hay alguna rubí construir en el método para hacer esto de manera eficiente?

+0

¿Puede garantizar que no habrá espacios dentro de la url? – Locksfree

+0

El usuario ingresa el texto, por lo que mi principal preocupación es eliminar todo lo que se parezca a una url hasta el espacio siguiente. '' http://bit.ly/the url with space'' se convertirá en ''url with space'' –

Respuesta

9

Pruebe con expresiones regulares:

(?:f|ht)tps?:\/[^\s]+ 
+2

@Donny Kurnia digamos que tienes tu cadena en un' str' variable, entonces puedes usar la expresión regular de @The Mask como lo siguiente: 'new_str = str.gsub (/ (?: f | ht) tps?: \/[^ \ s] + /, '')' o si quieres 'str' cambiar, puedes hacer' str .gsub! (/ (?: f | ht) tps?: \/[^ \ s] + /, '') ' –

+0

@DhruvaSagar la respuesta anterior funcionó donde falló la mía. @ inbound_text.gsub! (/ /m, ''). ¿Por qué? Buena respuesta. – Angela

4

simplemente me encontré Regular Expression - replace word except within a URL/URI y modificar el código que ser así:

URI_REGEX = %r"((?:(?:[^ :/?#]+):)(?://(?:[^ /?#]*))(?:[^ ?#]*)(?:\?(?:[^ #]*))?(?:#(?:[^ ]*))?)" 

def remove_uris(text) 
    text.split(URI_REGEX).collect do |s| 
    unless s =~ URI_REGEX 
     s 
    end 
    end.join 
end 

lo prueba en la consola de rieles y funcionó como se esperaba:

remove_uris('bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...') 
=> "bla bla bla... bla bla bla... bla bla bla..." 

Si alguien tiene una solución mejor/efectiva, la votaré o la aceptaré. Gracias.

+0

¿qué pasa con text.gsub! (URI_REGEX, '')? – nex

+0

Gracias por el comentario, @nex. Lo intentaré. –

+0

Tenga en cuenta que esto no funciona al 100%. Considere el siguiente texto: '" تفاصيل تغطية \ n # lexusriyadhlargestglobally \ n # لكزس_الرياض_الأكبر_في_العالم \ n تجدونها هنا \ nhttp: //example.com \ n http://example.com "' algunas partes del texto árabe y los emojis quedan fuera – mreq

Cuestiones relacionadas