我想删除某些文本末尾的"%"
。我想使用正则表达式来完成此操作,因为 ABAP 不容易处理字符串末尾的文本。
DATA lv_vtext TYPE c LENGTH 10 VALUE 'TEST %'.
REPLACE REGEX ' %$' IN lv_vtext WITH ''.
但它并不能取代任何东西。当我省略 "$"
时,文本将按预期删除,但我担心它可能会发现比想要的更多的出现次数。
我尝试使用 \z
或 \Z
而不是 $
,但无济于事。
最佳答案
这个答案是关于没有 REGEX 的替代方法。 POSIX正则表达式相当慢,而且有些人不愿意使用它,所以如果你没有完全关闭在正常的ABAP中这样做:
lv_vtext = COND #( WHEN contains( val = lv_vtext end = ` %` )
THEN substring( val = lv_vtext len = strlen( lv_vtext ) - 2 )
ELSE lv_vtext ).
带有上下文的代码:
DATA(lv_vtext) = `test %`.
lv_vtext = COND #( WHEN contains( val = lv_vtext end = ` %` )
THEN substring( val = lv_vtext len = strlen( lv_vtext ) - 2 )
ELSE lv_vtext ).
ASSERT lv_vtext = `test`.
关于regex - 用正则表达式替换字符串末尾的%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69461933/