如何在不使用abap中任何函数的情况下计算字符串的字数
各位专家好 我需要一个帮助来计算字符串中的单词,而不使用ABAP中的任何函数。 我们只能使用do循环和if条件如何在不使用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
请帮助您可以计算单词之间的空格数。 您至少需要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.