如何在不使用abap中任何函数的情况下计算字符串的字数

如何在不使用abap中任何函数的情况下计算字符串的字数,abap,Abap,各位专家好 我需要一个帮助来计算字符串中的单词,而不使用ABAP中的任何函数。 我们只能使用do循环和if条件 请帮助您可以计算单词之间的空格数。 您至少需要STRLEN来确定字符串长度。。。没有它,我认为这是行不通的。压缩在某些情况下可能有用。。。试一试,不要浓缩 DATA a TYPE string VALUE 'MY NAME IS JOHN'. DATA c TYPE i. DATA d TYPE c. DATA words TYPE i value 1. DATA e TYPE i V

各位专家好

我需要一个帮助来计算字符串中的单词,而不使用ABAP中的任何函数。 我们只能使用do循环和if条件


请帮助

您可以计算单词之间的空格数。 您至少需要STRLEN来确定字符串长度。。。没有它,我认为这是行不通的。压缩在某些情况下可能有用。。。试一试,不要浓缩

DATA a TYPE string VALUE 'MY NAME IS JOHN'.
DATA c TYPE i.
DATA d TYPE c.
DATA words TYPE i value 1.
DATA e TYPE i VALUE 0.

CONDENSE a.
c = STRLEN( a ).
DO c TIMES.
  d = a+e(1).
  e = e + 1.
  IF d = ' '.
    words = words + 1.
  ENDIF.
ENDDO.
WRITE words. // just as output ... delete on demand

这是家庭作业问题吗?你是他的老师吗听起来像是在家工作。要求某人为家庭作业问题提供代码。老师说你不允许使用常量:p我们应该找一个这样教abap的家伙……哈哈。好的,但我用一只手绑在背上,用一只脚跳着,蒙着眼睛编码了这个,所以至少我达到了他/她的另一边的条件-
METHODS count_words
  IMPORTING
    iv_text          TYPE string
  RETURNING
    VALUE(rv_result) TYPE i.

METHOD count_words.
  CONSTANTS lc_space TYPE string VALUE ` `.
  DATA(lv_remaining_text) = iv_text.
  DATA(lv_last_char) = ``.
  DO.
    IF lv_remaining_text IS INITIAL.
      RETURN. " or EXIT if you omit the METHOD around this
    ENDIF.
    DATA(lv_next_char) = lv_remaining_text(1).
    IF lv_next_char <> lc_space AND
       ( lv_last_char IS INITIAL OR
         lv_last_char = lc_space ).
      rv_result = rv_result + 1.
    ENDIF.
    lv_last_char = lv_next_char.
    lv_remaining_text = lv_remaining_text+1.
  ENDDO.
ENDMETHOD.
METHOD count_words_cleanly.
  rv_result = count( val   = iv_text
                     regex = `(\s\S|^\S)` ).
ENDMETHOD.