abap 字符串里找到最后一次出现的指定字符位置&长度


*这里找的是 ¥ 最后一次出现的位置

DATA text TYPE string.
DATA result_tab TYPE match_result_tab WITH HEADER LINE.
DATA LDS_RESULT TYPE MATCH_RESULT.
DATA LDF_INDEX  TYPE I.

text `C:\Users\lofn\Desktop\TEST`.

FIND ALL OCCURRENCES OF REGEX '(?:\\)'
     IN text RESULTS result_tab[].

LDF_INDEX lines( result_tab ).

READ TABLE result_tab INTO LDS_RESULT INDEX LDF_INDEX.

WRITE: /  LDS_RESULT-offset, LDS_RESULT-length.

*结果: 21    1 

*-----------------------------------------------------------------------------------------------

*循环的方法也可以

*-----------------------------------------------------------------------------------------------

  DATA: LDF_TEXT TYPE STRING,
       LDF_LONG TYPE I,
       LDF_NUM  TYPE I,
       LDF_TLOC TYPE I,
       LDF_TLON TYPE I.

  LDF_TEXT 'C:\Users\lofn\Desktop\TEST'.
  LDF_LONG STRLEN( LDF_TEXT ).
  LDF_NUM = LDF_LONG 1.

  IF LDF_TEXT+LDF_NUM(1'\'.
    LDF_TLOC = LDF_NUM.
    LDF_TLON 1.
  ELSE.
    
    DO LDF_LONG TIMES.
      CLEAR: LDF_NUM.
      LDF_LONG = LDF_LONG 1.
      
      IF LDF_LONG <= 0.
         LDF_TLON 0.
         EXIT.
      ENDIF.
      
      LDF_NUM = LDF_LONG 1.
      
      IF LDF_TEXT+LDF_NUM(1'\'.
        LDF_TLOC = LDF_NUM.
        LDF_TLON 1.
        EXIT.
      ENDIF.
    ENDDO.
  ENDIF.

  WRITE: LDF_TLOC, LDF_TLON.

*结果: 21    1 (在这里长度只是判断字符是否存在)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM