如何查找字符串中某字符最后一次出现的位置呢,可使用find语句,abap中可使用正则表达式Regex的语句就只有find以及replace语句了。
以下代码块表示了如何操作:
DATA: text TYPE char100,
moff TYPE i,
mlen TYPE i,
mcnt TYPE i.
text = '123A45A678'.
WRITE: / '转换前:',text.
FIND ALL OCCURRENCES OF 'A'
IN text
MATCH OFFSET moff "最后一次出现位置
MATCH LENGTH mlen "匹配字符长度
MATCH COUNT mcnt. " 计数匹配次数
WRITE: / '出现位置和长度:',moff,mlen.
"可进一步做替换处理
REPLACE 'A' IN
SECTION OFFSET moff LENGTH mlen OF
text WITH 'B'.
WRITE: / '转换后:',text.
下面是复杂的正则表达式匹配例子:
DATA text TYPE string.
DATA result_tab TYPE match_result_tab WITH HEADER LINE.
text = 'Shalalala!'.
"匹配la,并且la之后必须是! (?:...)表示非捕获组(分组,但不捕获);()表示捕获组(分组)
FIND ALL OCCURRENCES OF REGEX '(?:la)(?=!)'
IN text RESULTS result_tab[].
LOOP AT result_tab .
WRITE: / result_tab-offset, result_tab-length.
ENDLOOP.