[Tustep-Liste] Kuerzen eines Textes

Kuno Sch�lkle Schaelkle at zdv.uni-tuebingen.de
Mi Mär 14 10:11:15 CET 2007


Lieber Herr Reeg,

> gibt es eine einfache Möglichkeit mit Mittel dner Makrosprache,
> einen Text so zu verkürzen, daß nur die ersten drei und die letzten drei
> Wörter übrig bleiben?
>
> a b c d e f g h i j k
> zu
> a b c ... i j k

eine fertige Funktion gibt es nicht. Eventuell
kann die Funktion SHORTEN benutzt werden.
Bei ihr kann man die maximale Zeichenzahl
am Anfang und Ende des Textes angegeben
werden. Es wird dann am Blank davor  bzw.
danach abgetrennt. Im unten angegebenen
Beispiel 1 waere das Ergebnis:
  "Das ist ein ... eines Textes"
Das Beispiel 2 liefert das genaue Ergebnis:
  "Das ist eine ... Verk^urzen eines Textes"

Mit herzlichen Gruesse
Kuno Schaelkle

========================================

$$=-
MODE VARIABLE

SET lang = "Das ist ein kleines Beispiel zum Verkürzen eines Textes"

SET kurz = SHORTEN (lang, 15, " ... ", 15)

PRINT kurz

---------------------------------------------------------------------

$$=-
MODE VARIABLE

SET lang = "Das ist ein weiteres Beispiel zum Verkürzen eines Textes"

- Text in einzelne Wörter aufteilen

SET liste = SPLIT (lang, ":<> :")

- Anzahl der Wörter feststellen

SET anzahl = SIZE (liste)

IF (anzahl.LE.6)  THEN

   - bei 6 oder weniger Wörter ist nichts zu tun

   kurz = lang

ELSE

   - sonst die ersten drei Wörter in "kurz" einsammeln

   SET kurz = ""
   LOOP n = 1, 3
      SET wort = SELECT (liste, #n)
      SET kurz = APPEND (kurz, " ", wort)
   ENDLOOP

   - drei Punkte für die ausgelassenen Wörter ergänzen

   SET kurz = CONCAT (kurz, " ...")

   - die drei lezten Wörter in noch anhängen

   SET anfang = anzahl - 2
   LOOP n = anfang, anzahl
      SET wort = SELECT (liste, #n)
      SET kurz = APPEND (kurz, " ", wort)
   ENDLOOP

ENDIF

- zur Kontrolle ausgeben

PRINT kurz



Mehr Informationen über die Mailingliste Tustep-Liste