ABAP字符串(中英文混合)首字母大写

输入混有中英文的字符串 输出该字符串英文部分首字母大写    

输入字符串:I_DATA     输出字符串:I_DATA   
DATA:  Z_LENG    TYPE  I      "获取输入字符串长度
       L1              TYPE  I,      "单个字符位数表示
       L2              TYPE  I      "单个字符位数表示
      L3             TYPE  I,       "单个字符所占位数值
      S               TYPE  C,       "单个字符值
      ZFLAG   TYPE  C.       
"标识


   CLEAR :Z_LENG,L1,L2,L3,ZFLAG,S,I_DATAC,P_DATA.

   TRANSLATE  I_DATA  TO LOWER CASE.      "将字符串中字母全部转为小写
   TRANSLATE  I_DATA+0(1)  TO UPPER CASE.  "第一位置大写
   Z_LENG STRLEN( I_DATA ).           "获取字符串长度
   L1 0.
    L2 1.
   DO Z_LENG TIMES.                   "按单个字符循环字符串
     S =  I_DATA+L1(L2).
     CALL FUNCTION 'NLS_VISUAL_CHARLEN'    "函数获取每个字符串位数
     EXPORTING
       STR          = S
*      METRICS        =
     IMPORTING
*      LEN_MEMORY      =
       LEN_VISUAL     = L3              "L3 值为1 说明该字符是英文或数字 值为2 该字符说明为汉字
        .
     IF L3 AND ZFLAG IS INITIAL .   "若为英文 且标识为空时 将该字符大写 并更新字符串
       TRANSLATE S  TO UPPER  CASE.
       I_DATA+L1(L2= S.
       ZFLAG 'X'.                    "标识设为'X
     ELSEIF L3 <> 1.                    "若为非英文  清空标识
       CLEAR ZFLAG.
     ENDIF.
       L1  = L1 + 1.                  "取下一位
   ENDDO.
 .                    "更新后的字符串I_DATA即为输出 可自行封装成函数

posted on 2019-06-24 10:04  SAP小龙女  阅读(970)  评论(0编辑  收藏  举报

导航