这看起来像一个简单的任务,但你会如何解决它?我现在没有得到任何解决方案。
ls_message-text = 'Pernr. 12345678 (Pete Peterson) is valid (06/2015).
append ls_message to lt_message.
ls_message-text = 'Pernr. 12345678 (Pete Peterson) is valid (07/2015).
append ls_message to lt_message.
这是我得到的代码,事实是,这是我在我的应用程序中显示的消息。客户说2条消息是相同的。第二个应删除。
你如何比较删除该行?该表可能包含多于2行,也包含另一个文本,如“无效”。
我无法扩展结构以包含更多字段用于比较,我只能在这一个字段上使用字符串比较。是否可以使用正则表达式进行字符串比较?
答案 0 :(得分:2)
假设您只想为每个唯一的Pernr保留一条消息。在lt_message
中,您可以使用正则表达式来过滤Pernr。并将其用作" key"。现在,您可以删除与该密钥匹配的lt_message
的第一条消息。
如果您只想保留某些消息,请展开您的正则表达式,例如只有"有效"的。
答案 1 :(得分:2)
也许您可以使用Levenshtein距离来解决您的需求。 ABAP具有内置功能"距离"它为您提供了将一个字符串转换为另一个字符串的操作数。例如:
DATA msg1 type string.
DATA msg2 type string.
msg1 = 'Levehnstein Distance 7/2015'.
msg2 = 'Levehnstein Distance 6/2015'.
data l_distance type i.
l_distance = distance( val1 = msg1 val2 = msg2 ).
if l_distance lt 2 .
"It's almost the same text
endif.
在这种情况下,l_distance将为1,因为只需要一个操作(替换)。
希望这有帮助,
答案 2 :(得分:0)
您是否尝试过编程DEMO_REGEX_TOY。 给出了如何使用Regular expresion的想法,这可能会解决问题