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