REGEX替换String中的多发事件

2020-08-20 22:21发布

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

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


专家们,

我正在使用REST调用通过URL获取.CSV文件。 我得到的输出是字符串格式。

EG:测试用户,美国,现金," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00

我的要求是在多个实例之间使用REGEX在"" 之间用逗号替换(,)

我正在寻找的输出 :testuser,USA,CASH ,,, " 4000.00" ,0.00,0.00," 4000.00" ,0.00,0.00," 4000.00" ,0.00,0.00

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

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


专家们,

我正在使用REST调用通过URL获取.CSV文件。 我得到的输出是字符串格式。

EG:测试用户,美国,现金," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00

我的要求是在多个实例之间使用REGEX在"" 之间用逗号替换(,)

我正在寻找的输出 :testuser,USA,CASH ,,, " 4000.00" ,0.00,0.00," 4000.00" ,0.00,0.00," 4000.00" ,0.00,0.00

付费偷看设置
发送
6条回答
何必丶何苦呢
1楼 · 2020-08-20 23:14.采纳回答

嗨,

您可以使用以下正则表达式替换双引号内的逗号(当然,您只需要使用while并替换所有出现的语句)即可:

 DATA(  lv_string)=`testuser,USA,CASH ,,," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00`。

 在正则表达式前写`String:&&lv_string。
 当sy-subrc = 0时。
   在lv_string中用$ 1 $ 2替换正则表达式'(" [^",] +),([^"] +")'的所有匹配项。
 结束。
 WRITE:/`正则表达式后的字符串:&&lv_string。

上述示例程序的输出:

此示例考虑到在引号之间您可以使用多个逗号。

最诚挚的问候

Geert-Jan Klaps

callcenter油条
2楼-- · 2020-08-20 22:59

您没有用于读取CSV的现有解决方案吗?

木偶小白
3楼-- · 2020-08-20 23:16

下面将看到一个正则表达式,该正则表达式仅替换双引号内数字的逗号:

 data(lv_result)= replace(val =  | testuser,USA,CASH,"," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00," 4,000.00",0.00,0.00 |
                                regex = |(" [0-9] *)(,)([0-9。] *")| 与= | $ 1 $ 3 |  occ = 0)。
 

正则表达式可用于3个捕获组。 第二个捕获组代表逗号。 在用于替换的值(带有参数)中,未提及第二个捕获组,因此逗号从最终字符串中删除。

考虑到您必须多次执行替换命令 对于相同的字符串,当您拥有更大的数字时(例如,当您拥有数以百万计时是两次-因为数字中有两个逗号;当您有十亿时则是三次)。 当您知道CSV传送中可以达到的最大数目时,可以设置一个字符串的替换执行次数。

CJones
4楼-- · 2020-08-20 22:57

嗨,

我个人在以下情况下使用的参考 使用正则表达式:

- https://www.regular-expressions.info/quickstart.html

- https://regex101.com/

最诚挚的问候,

Geert-Jan Klaps

compass1988
5楼-- · 2020-08-20 23:05

如果知道列数(.csv),则使用SPLIT命令

 SPLIT csv_string AT','INTO TABLE data(  Itab)。
  然后根据需要容纳

 SPLIT csv_string AT','INTO <变量列表>
 然后按照你的意愿涂色
 
奄奄一息的小鱼
6楼-- · 2020-08-20 22:58

是的,您是对的,我没有注意到该金额内的逗号

一周热门 更多>