无符号Unicode问题

2020-09-04 07:57发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我对Unicode字...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我对Unicode字符有疑问,

假设我有一个字符串:"TôiDễThương"

我想将此字符串转换为:'Toi De Thuong'

任何人都可以使用涵盖所有情况的功能模块或算法来解决此问题。

非常感谢

4条回答
落灬小鱼
2020-09-04 08:31

一个简单的解决方案是列出所有可能的字符并使用 TRANSLATE (或翻译用于ABAP) 7.40及更高版本)。

您可以通过查看表TCPUCATTR列出所有可能的字符,与* A关联的所有字符都可以通过* *大写字母A *来查找,而*可以通过* *来查找" a" 小写字母A *等。

此代码列出了TRANSLATE的翻译字母:

 DATA c1 TYPE c LENGTH 1。
 数据x2类型x长度2。
 DATA(upper_lower)= sy-abcde && to_lower(sy-abcde)。
 选择*从tcpucattr
     charid喜欢'00%'的地方
       AND attrkind ='N'
       AND(attr LIKE'%SMALL LETTER%'或attr Like'%CAPITAL LETTER%')
     插入表@DATA(tcpucattr_s)。
 做52次。
   DATA(字母)=子字符串(val = upper_lower off = sy-index-1 len = 1)。
   如果sy-index <= 26。
     DATA(pattern_attr)= | *大写字母{to_upper(letter)} * |。
   其他。
     pattern_attr = | *小写字母{to_upper(letter)} * |。
   万一。
   DATA(字母)=``。
   写:/字母,":"。
   在tcpucattr_s的ASSIGNING FIELD-SYMBOL()处环回attr CP pattern_attr。
     x2 =  -charid + 2。
     c1 = cl_abap_conv_in_ce => uccp(x2)。
     如果c1 <>字母。
       写:c1 NO-GAP,字母NO-GAP。
     万一。
   结局。
 ENDDO。

PS:可以简单地删除" combining accent"类型的字符(在TCPUCATTR中全部带有文本" COMBINING")。

一周热门 更多>