面向对象的方式在特定字符处分割字符串

2020-08-19 23:18发布

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

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


嘿,

假设我有一个字符串" Test#String",我想在#处将其拆分,以获取" Test"。

到目前为止,我发现的唯一方法是:

将var AT'#'拆分为var DATA(DUMMY)。

有没有一种方法(最好是面向对象)来执行此操作而没有DUMMY变量?

预先感谢

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

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


嘿,

假设我有一个字符串" Test#String",我想在#处将其拆分,以获取" Test"。

到目前为止,我发现的唯一方法是:

将var AT'#'拆分为var DATA(DUMMY)。

有没有一种方法(最好是面向对象)来执行此操作而没有DUMMY变量?

预先感谢

付费偷看设置
发送
4条回答
打个大熊猫
1楼 · 2020-08-19 23:33.采纳回答

您可以使用字符串函数代替split命令:

 data(var)=`part1#part2`。
 var = segment(val = var sep =`#`index = 1)。
 " var = part1
 
能不能别闹
2楼-- · 2020-08-19 23:51

>> 1.不,我的意思是说我可以在操作数位置使用所有内容(不确定是否这样调用)

示例:

var = REPLACE(VAL = var REGEX ='../'WITH ='')。

将var AT'#'拆分为var DATA(DUMMY)

我必须使用两行,而不是在SPLIT中使用REPLACE函数。

>> 2.5。 是的,但这是我未来的自我的一个问题^^

感谢您的所有帮助!

昵称总是被占用
3楼-- · 2020-08-19 23:59
  1. "首选面向对象"是什么意思,因为您要实现的任务是在基本代码语句级别上进行的。 OO不会自己为您实现这一目标。 将功能包装在OO类/实例方法,FM或什至是报表中由您决定。
    或者您是否希望找到已经存在的SAP标准类来提供像您这样的"简单"任务 已经? 我个人不会浪费时间来寻找类似的东西,因为您可以比在外面寻找东西并熟悉它更快地实现它,并且还必须处理内存和性能方面的开销。
  2. 如果使用SPLIT语句,它必须执行您要求的操作,这就是将一件事分解为两个或更多多带带的事物。 因此,您至少必须为该语句提供两个变量以将某物拆分为(或使用表拆分为)。 当您仍然需要拆分后创建的所有子元素时,最好使用SPLIT语句。
  3. 但是您实际上不希望"拆分",而是要"查找并替换"(请参见下面的编码)。
    而且,您也可以通过其他方式解决该问题,即" 可能也可能会更"高效",但会导致"更多"的编码(例如逐步浏览变量的位置并将其与搜索条件"#"进行比较,并在找到后将其删除以及所有其他内容)
    我认为,如果您可以在一条语句中做到这一点,我就不会想办法以另一种方式做到这一点。

因此,如果您想避免声明另一个变量而仍然拥有它 在一个语句中,可以使用replace和正则表达式,例如:

 REPLACE REGEX'#。*'in var with space。
SC_Yao
4楼-- · 2020-08-19 23:51

Lars Sawyer 的建议很有趣,但我不认为这是最好的方法。 我认为它不像SPLIT那样可读性强,也不能立即理解。

这些字符串操作有其应有的地位,但我坚持使用关键字SPLIT。 要使其成为" OO",您可以创建自己的功能方法。 但是在我看来(我也用JAVA编程)相当于使用:

 int sum = add_two_numbers(1,2);

 int add_two_numbers(int a,int b){
   返回a + b;
 } 

而不是

 int sum = 1 + 2; 

ABAP是一种丰富的语言,具有Michael Piesche 指出,基本语言组件比Java多得多。 我真的认为使用更好的编程习惯。

顺便说一句-我会使用SPLIT var AT'#'插入表数据(var_components)。 那就不用假人了!

一周热门 更多>