考虑双字节的截取字符串处理

系统的标准Function Module:TEXT_SPLIT

以前不知道有,自己写的一个,没有考虑Unicode的情况。

*&---------------------------------------------------------------------*
*&      Form  substring
*&---------------------------------------------------------------------*
*  考虑中文的字符串截取程序
*  如果直接截取包含半个汉字,将删除最后的半个汉字
*----------------------------------------------------------------------*
*      -->P_TEXT     text
*      -->P_POS      text
*      -->P_LEN      text
*      -->P_RESULT   text
*----------------------------------------------------------------------*
FORM substring
  USING p_text
        p_pos TYPE i
        p_len TYPE i
  CHANGING p_result
           p_result_len.
  DATA: l_last_ascii TYPE x VALUE '7F',
        l_result(255) TYPE c,
        l_last_char TYPE x,
        l_last_char_index TYPE i.

  p_result = p_text+p_pos(p_len).
  l_last_char_index = STRLEN( p_result ) - 1.

  WRITE p_result+l_last_char_index(1) TO l_last_char.
  IF l_last_char > l_last_ascii.
    p_result = p_result(l_last_char_index).
    p_result_len = STRLEN( p_result ).
  ENDIF.

ENDFORM.                    "substring

Comments are closed.