我和其他许多人一起参加了Thomas Jung最近推出的"SAP社区编码挑战系列"。
这是一个巧妙的挑战,因为它本质上很简单,但邀请了不同的方法来应对挑战,并有机会挖掘一些新的,更复杂的ABAP语法。
当分解挑战本身时,新云,我马上决定,大数据是什么意思,"REDUCE"将有助于在挑战的"代码行"部分作弊。
挑战中提供更多创造性机会的部分是:
确定句子中的单词数?重复句子中的每个单词?计算每个单词中的唯一字符?
很直截了当的东西,但如何有效地做到这一点成了挑战。
确定句子的字数?
一些旧的ABAP机制包括一个"SPLIT"命令,但提供的句子"ABАP is excellent"有一些额外的空格,因此需要一个"CONDENSE"。一个"SPLIT-into table"和一个"CONDENSE"在里面会返回一个单词表和一个"lines()"调用会处理单词的数量:
(我将在下面展示一个包含这个的示例解决方案)
但是我正在寻找一种基本上扫描句子的方法。所以我在count调用中使用了一个带正则表达式的condense来获得需要显示的单词数,并支持我对句子的扫描:
迭代到句子中的每个单词?
嵌入"consulate"的"SPLIT-into table"会处理这个问题,但就像我说的,我想尝试扫描句子。
这是我遇到"segment"命令的地方。除了正则表达式模式之外,我还能够做到:
(您必须注意,如果索引超出范围,会引发异常)
计算每个单词中的唯一字符?
在我看来,这是挑战中更复杂的部分,我最初的想法是再次利用正则表达式,因为这将是最直接的方法。
否则,您可以使用某种循环,或者将单词的字母分解到另一个表中,然后执行一种选择不同的类型事情……
我的结论是:
它看起来很简单。
REDUCE
现在,这个过程的这些部分都被弄清楚了,只需要把它放在"REDUCE"调用中:
我使用了一个stringtab,让结果的编写更方便,同时也让字符串模板更方便。
这个特殊的实现最终完成了作为我的一份意见书。
另一份是我被授予"测试班奖"的原因。
使用拆分成表的替代方法
如果我决定拆分成表的话,我可以这样做:
如果没有更好的实施,美国高防云服务器,也一样好………我应该像一些人一样提交这一份
最后的想法
我注意到正则表达式可能会变得非常粗糙。它们在各种项目中对我非常有用。
我个人使用Regex Magic和Regex Buddy等工具来帮助构建和测试表达式。
我个人希望看到更多这样的挑战,类似于代码信号(以前称为代码大战),每次挑战都要通过一组单元测试,一旦成功完成,你可以看到其他人如何处理同样的挑战,甚至投票给你最喜欢的。
但我很好与托马斯荣格和里奇海尔曼通过数百个提交解析也。。哈哈。
,零售大数据解决方案,大数据包括