无符号Unicode问题

2020-09-04 07:57发布

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

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


大家好,

我对Unicode字符有疑问,

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

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

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

非常感谢

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

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


大家好,

我对Unicode字符有疑问,

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

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

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

非常感谢

付费偷看设置
发送
4条回答
落灬小鱼
1楼-- · 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")。

SC_Yao
2楼-- · 2020-09-04 08:06

请使用COMMENT 用于评论,问题,添加详细信息等的按钮,ANSWER仅是提出解决方案,在答案区域的右边删除SAP文本:"在回答之前,只有在为发布者的问题提出解决方案时才应提交答案。 "

Doze时光
3楼-- · 2020-09-04 08:19

有功能模块SCP_REPLACE_STRANGE_CHARS。 也许不是您希望的那样考虑或不考虑所有字符,但是您可以复制并改编(并简化)。

Cikesha
4楼-- · 2020-09-04 08:15

如果我想删除越南语的口音,如果我 用这个fm,有些情况不好,我的意思是字符消失了

一周热门 更多>