Text truncation ohne Wörter zu zerstückeln

Hi,

ich will einem gegebenen Text nur bis zu einer maximalen Anzahl von
Zeichen darstellen, also den Text ggf. kürzen. An sich ist das mit
truncate aus dem TextHelper ein No-Brainer, würde die Methode auch
die Integrität der Wörter im Text beachten und nicht einfach nur
abschneiden. Was mir vorschwebt ist in etwa dies:

text = “Lorem ipsum dolor sit amet, consectetur adipisici elit, sed
eiusmod tempor incidunt ut labore et dolore magna aliqua.”
truncate_but_keep_words_intact(text, 15, “…”)

=> “Lorem ipsum…”

Kennt jemand eine smarte Methode dies zu erreichen?

Thanx
Torsten

Von Hand:

den Index des Textes durchgehen, bis 15 (in diesem Fall),
abfragen ob das Zeichen an der aktuellen Stelle gleich " " ist und
wieder rückwärts zählen bis das der Fall ist. Von 0 bis hier abschneiden
und die drei Pünktchen dransetzen, fertig.

Gruß,
Raphael

Hatte ich auch schon gefunden - hier lässt sich aber “nur” die Anzahl
der Wörter, nicht die der Zeichen festlegen :frowning:

Am 10.10.2007 um 21:49 schrieb Jan P.:

Werd ich so machen (müssen), dachte nur, dass es was schlankeres
dafür geben würde…

Thanx
Torsten

Am 10.10.2007 um 21:45 schrieb Raphael J. Schmid:

http://snippets.dzone.com/posts/show/804

Gruß
Jan

Am 10.10.07 schrieb Raphael J. Schmid [email protected]:

abschneiden. Was mir vorschwebt ist in etwa dies:
Torsten


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


Jan P.
Rechtsanwalt

Grünebergstraße 38
22763 Hamburg
Tel +49 (0)40 41265809 Fax +49 (0)40 380178-73022
Mobil +49 (0)171 3516667
http://www.inviado.de

Ok. Der Richtigkeit wegen.
http://daniel.collectiveidea.com/blog/2007/7/10/a-prettier-truncate-helper

Interessanterweise ist der Beitrag exakt von heute. Hatte wohl ein
Kollege das heute hinzugefügt. :slight_smile:

Torsten Oettel schrieb:

Ich weiss nicht mehr woher ich es habe. Habe ich lokal in einer Sammlung
der vershciedensten Snippets.
Aber sollte genau das machen was du suchst.

 # Awesome truncate
# First regex truncates to the length, plus the rest of that word,

if any.
# Second regex removes any trailing whitespace or punctuation
(except ;).
# Unlike the regular truncate method, this avoids the problem with
cutting
# in the middle of an entity ex.: truncate(“this & that”,9) =>
“this &am…”
# though it will not be the exact length.
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

HTH

Daniel

Torsten Oettel schrieb:

Am 10.10.2007 um 23:09 schrieb Daniel W.:

Ok. Der Richtigkeit wegen.
http://daniel.collectiveidea.com/blog/2007/7/10/a-prettier-truncate-
helper

Interessanterweise ist der Beitrag exakt von heute. Hatte wohl ein
Kollege das heute hinzugefügt. :slight_smile:

Da weise ich doch gleich noch auf meinen Einzeiler hin:

http://tomk32.de/2007/08/01/texte-abkuerzen-mit-ruby/

ciao, tom


Thomas R. “TomK32” Koll <> http://tomk32.de <> http://kampodscha.com
just a geek trying to change the world

Hey vielen Dank - sind alles interessante und smarte! Approaches :slight_smile:
Hab selber auch noch einen entdeckt, der Sinn macht, falls man mal
was anderes als ein " " als Seperator haben sollte:
http://dev.rubyonrails.org/ticket/8682

Thanx & Greetz
Torsten

Am 11.10.2007 um 09:15 schrieb Thomas R. Koll:

Hallo zusammen,
wenn auch sehr kurzfristig möchte ich auf diesem Wege die Treffen der
RuRUG bekannt geben.

Termine:
Jeden zweiten Donnerstag im Monat von 19 - 21 Uhr.
* 11.10.2007
* 08.11.2007
* 13.12.2007

Weitere Infos unter http://www.rurug.de

Gruß Christof