Si me pasan una frase muy larga, quiero recortarla hasta 120 caracteres,
pero me gustaría que no se corten palabras. ¿Sabéis si hay alguna
función que lo haga, o tengo que montarme un bucle para que añada
palabra por palabra hasta que llegue al límite?
Buscando un poco he encontrado esto
def awesome_truncate(text, length = 30, truncate_string = “…”)
return if text.nil?
l = length - truncate_string.chars.length
text.chars.length > length ? text[/\A.{#{l}}\w*;?/m][/.*[\w;]/m] +
truncate_string : text
end
La búsqueda en Google que he hecho, una vez comprobado que el helper
truncate no te servía, ha sido esta:
Si me pasan una frase muy larga, quiero recortarla hasta 120
caracteres,
pero me gustaría que no se corten palabras. ¿Sabéis si hay alguna
función que lo haga, o tengo que montarme un bucle para que añada
palabra por palabra hasta que llegue al límite?
Cre que algo así te serviria, aunque tendrás que depurar la expresión
regular para que tenga en cuenta los puntos, las comas etc.
def text_wrap(s,width=120)
wrapped_text = “”
s.split(/\s+/).each do |word|
if wrapped_text.size + word.size >= width
return wrapped_text
elsif wrapped_text.empty?
wrapped_text = word
else
wrapped_text << " " << word
end
end
end
El 21/01/2008, a las 13:29, Fernando C.
escribió:
Si me pasan una frase muy larga, quiero recortarla hasta 120
Si me pasan una frase muy larga, quiero recortarla hasta 120
caracteres,
pero me gustar�a que no se corten palabras. �Sab�is si hay alguna
funci�n que lo haga, o tengo que montarme un bucle para que a�ada
palabra por palabra hasta que llegue al l�mite?
Se podria hacer de golpe con una regexp, algo asi:
irb(main):023:0> "foo,\n\n bar baz?".match(/\A.{0,9}\b/m)[0]
=> "foo,\n\n "
irb(main):024:0> "foo,\n\n bar baz?".match(/\A.{0,10}\b/m)[0]
=> "foo,\n\n bar"
donde pone 9 y 10 iria 120.
– fxn
Efectivamente, truncate no sirve, y tampoco sirve slice por el mismo
motivo: cortan las palabras.
Las funciones de Manuel y Emili sà que funcionan, pero me voy a quedar
con la regexp de Xavier, que me ha parecido la solución más elegante.
Gracias a todos!!
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.