最近在研究Unicode切中文字串

報表中文字算2個,unicode系統卻算1個,當中英文數字夾雜的時候滿麻煩的

我發現一個function叫做 'TEXT_SPLIT' 切的倒是很整齊的

當輸入字串後會傳回兩個參數line 會傳回結果,rest 會傳回被切剩下的字串

經過研究改寫一下可以依照長度切一切一筆一筆放在itab中做相關運用

這種寫法我自己測試的一下切的滿準的還遇不到什麼問題。輸入4會切出兩個中文字

 

FORM CUT_SPLIT TABLES PT_STRING STRUCTURE UPS_YS_STRING_TABLE
               USING PI_STRING TYPE STRING
                     PI_SIZE TYPE i.
DATA: PI_STR1(4096).
DATA: PI_STR2(4096).
DATA: P_LEN TYPE I.
REFRESH PT_STRING.
P_LEN = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( PI_STRING ).
PI_STR1 = PI_STRING.

IF P_LEN <= PI_SIZE OR PI_SIZE IS INITIAL.
   PT_STRING-LINE = PI_STR1.
   APPEND PT_STRING.
  EXIT.
ENDIF.

WHILE P_LEN > 0.
      CALL FUNCTION 'TEXT_SPLIT'
          EXPORTING
            LENGTH             = PI_SIZE
            TEXT               = PI_STR1
         IMPORTING
           LINE               = PI_STR1
           REST               = PI_STR2.
     PT_STRING-LINE = PI_STR1.
     APPEND PT_STRING.
   IF PI_STR2 = ''.
     EXIT.
   ENDIF.
 P_LEN = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( PI_STR2 ).
 PI_STR1 = PI_STR2.
ENDWHILE.


ENDFORM.

arrow
arrow
    全站熱搜

    ROACH 發表在 痞客邦 留言(0) 人氣()