中文字符串提取和字节长度计算

 abap 中文字符串提取和字节长度计算 (两种方法)_abap 字符串长度-CSDN博客

字节长度 


 

DATA: lv_str TYPE string,
      lv_len TYPE I.

lv_str = 'AB中国'.

lv_len = cl_abap_list_utilities=>dynamic_output_length( lv_str )."获取字节长度

WRITE lv_len."结果为6

 中文字符串提取

DATA: w_uccp TYPE I,
      w_temp(2) TYPE C,
      w_left(100) TYPE C,
      w_len(10) TYPE C,
      s_len TYPE I,
      STR TYPE  STRING,
      CHARLEN type i,
      string type string
      .
string = 'AB型爱喝茶'.
w_left = 'AB型爱喝茶'.

DATA : BEGIN OF LINE,
  TEXT TYPE C,
END OF LINE,
itab LIKE TABLE OF LINE WITH HEADER LINE.


*DATA str TYPE string.
DO.
  CALL FUNCTION 'TEXT_SPLIT'  "一次读两个字节
  EXPORTING
    length = 2
    TEXT   = w_left
  IMPORTING
    LINE   = w_temp    "这次读取的两字节
    rest   = w_left.    "剩余的字符

  CALL METHOD cl_abap_conv_out_ce=>uccpi  "读取asc码值只对一个字符读一次AB只读A
  EXPORTING
    char = w_temp
    RECEIVING
    uccp = w_uccp.
  w_len = STRLEN( w_temp ).
*  WRITE: /1 w_temp,
*  10 w_uccp,
*  25 w_len.
  IF w_uccp > 256.
    CONCATENATE str w_temp INTO str.
  ENDIF.
  IF w_left IS INITIAL OR sy-INDEX > 100.
    EXIT.
  ENDIF.
ENDDO.
IF str IS NOT INITIAL.
  DATA:t_len TYPE I.
  CLEAR :  s_len,CHARLEN.
  t_len = STRLEN( string ).
  s_len = STRLEN( str ).
  t_len =  t_len - s_len .
  s_len = s_len * 2 .
  CHARLEN =  t_len + s_len.
  WRITE :/,'CHARLEN=' ,charlen, 'STR= ',str.
ENDIF.

结果:

中文字符串提取和字节长度计算_第1张图片

你可能感兴趣的:(abap,windows)