Folgende Benutzer bedankten sich beim Autor Szel für den Beitrag:
crishi_crd
Code: Alles auswählen.
REPLACE ALL OCCOURRENCES (OF REGEX ...) IN ... WITH ...
SPLIT ... AT ... INTO TABLE ...Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
crishi_crd
Ich würde das mittels "COLLECT ... INTO ..." lösen. (Mehr dazu in der Hilfe zum selber lernen).crishi_crd hat geschrieben:wie kann ich das am Besten umsetzen?
Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
crishi_crd
Code: Alles auswählen.
*Text formatieren
LOOP AT itab. "lv_replace value ',;.:?!'
REPLACE ALL OCCURRENCES OF REGEX lv_replace IN itab WITH space.
SPLIT itab AT space INTO TABLE itab_lines.
APPEND LINES OF itab_lines TO itab_res.
ENDLOOP.Code: Alles auswählen.
*-----------------------------------------------
*doppelte itab Einträge suchen.
*-----------------------------------------------
LOOP AT itab_res INTO wa1.
LOOP AT itab_res INTO wa2
WHERE values = wa1-values.
*------------------------------------------------
*Werte zuweisen
IF wa1-values = wa3-values.
ls_twenty_words-anzahl = ls_twenty_words-anzahl + 1.
ELSE.
ls_twenty_words-wort = wa1-values.
ls_twenty_words-anzahl = ls_twenty_words-anzahl + 1.
ENDIF.
ENDLOOP.
COLLECT wa1 INTO wa3.
ENDLOOP.eigentlich macht COLLECT alles was du willst. Der Textvergleich wird durchgeführt und auch automatisch "gezählt".crishi_crd hat geschrieben:klappt alles nicht so recht, wie ich mir das vorstelle und ja, ich bin mir bewusst, dass ich bestimmt Denkfehler bei der IF-Anweisung habe -.-
Code: Alles auswählen.
* Für jedes Wort des Textes
LOOP AT itab_res INTO wa1.
* Einen neuen Satz aufbauen
ls_twenty_words-wort = wa1-values. "Das Wort ist der Key
ls_twenty_words-anzahl = 1. "und kommt genau einmal vor
* Verdichtete ITAB je Wort inkl Anzahl erstellen:
COLLECT ls_twenty_words INTO lt_twenty_words.
ENDLOOP.
Code: Alles auswählen.
REPLACE ALL OCCURRENCES OF REGEX [,;\.:?!] IN itab WITH space.
Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
crishi_crd
Auch dahin gehend, dass es "unbekannte" Zeichen gibt, die im Text vorkommen können: »« " () ... „ “a-dead-trousers hat geschrieben:Ach ja, das REGEX ist optional, hilft aber ungemein bei der Lösung, sodass man wirklich nur mit zwei Befehlen auskommt.
Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
crishi_crd
Man könnte auch die Suchlogik ändern und alles was kein Buchstabe ist ersetzten. Bin mir nur gerade nicht sicher, wie das mit RegEx geht und wie man die Sonderbuchstaben aus anderen Sprachen sinnvoll mit einbaut.ewx hat geschrieben:Auch dahin gehend, dass es "unbekannte" Zeichen gibt, die im Text vorkommen können: »« " () ... „ “
Und wenn man andere Sprachen analysieren möchte, geht's noch weiter mit: ¡¿
Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
crishi_crd