2017-07-05 2 views
-5

J'AI BESOIN D'AIDE ...COMMENT compter vogals IN ABAP

Comment puis-je contenter les vogals d'une chaîne?

par exemple. Data: str type string valeur 'steave'.

et je veux que la sortie soit.

2 -> e. 1 -> a.

+2

Qu'avez-vous essayé jusqu'à présent? –

+0

Voulez-vous dire «wovels» quand vous dites «vogals»? –

+1

@SergioPrats Voulez-vous dire voyelles quand vous dites «wovels»? : P – jmoerdyk

Répondre

1

Je pensais sérieusement que vous inventiez des mots au hasard. J'espère que 'vogals' sont des caractères. Vogals on m'a dit, sont des voyelles. Merci @jmoerdyk. Quoi qu'il en soit, puisque vous m'avez intéressé je pense que cela peut fonctionner:

vowels = 'aeiouy' 
length = STRLEN(vowels). 
WHILE index < length. 
    char = vowels+index(1). 
    FIND ALL OCCURENCES OF char IN yourString 
    MATCH COUNT occurrences 
    WRITE:/char,'appears',/occurrences,'times' 
    ADD 1 TO index. 
ENDWHILE. 

Semble difficile de travailler pour SAP. Le langage semble bien fonctionner avec les tables/bases de données, pas ce genre d'opérations de chaînes de caractères. Parcourez simplement la chaîne/char et rassemblez les résultats dans une table interne statistique.

+1

Je devine du fait qu'ils ont seulement référencé compte pour 'a' et 'e', ​​que peut-être vogal == voyelle. – jmoerdyk

+0

@jmoerdyk Bonne prise, je vais modifier. – kabanus

1

Utilisez CA (contient n'importe quel) opérateur pour vérifier les voyelles. Exemple de code:

DATA: str TYPE string VALUE 'steave', 
     l_pos TYPE sy-index, 
     BEGIN OF ls_stat, 
     char TYPE c, 
     count TYPE sy-index, 
     END OF ls_stat, 
     lt_stat LIKE STANDARD TABLE OF ls_stat. 

DO strlen(str) TIMES. 
    l_pos = sy-index - 1 . 
    IF str+l_pos(1) CA 'AaEeIiOoUu'. 
    ls_stat-char = str+l_pos(1). 
    ls_stat-count = 1. 
    COLLECT ls_stat INTO lt_stat. 
    ENDIF. 
ENDDO. 

SORT lt_stat BY count DESCENDING. 
LOOP AT lt_stat INTO ls_stat. 
    WRITE:/ls_stat-count, '->', ls_stat-char. 
ENDLOOP.