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

博客介绍了将混有中英文的字符串中英文部分首字母大写的处理方法。通过一系列操作,如将字符串字母转小写、首位置大写,按单个字符循环字符串,利用函数获取字符位数,根据字符类型进行大小写转换等,最终得到处理后的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

输入字符串: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即为输出 可自行封装成函数

转载于:https://www.cnblogs.com/WACBZWY/p/11075578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值