- 去除前導零
DATA lv_char1 TYPE c LENGTH 10. lv_char1 = '0000021211'. **********************************************************************方式1 使用shift SHIFT lv_char1 LEFT DELETING LEADING '0'. write:/ lv_char1. **********************************************************************方式2 使用CONVERSION_EXIT_ALPHA_OUTPUT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = lv_char1 IMPORTING output = lv_char1. WRITE:/ lv_char1. **********************************************************************方式3 使用表達式 lv_char1 = |{ lv_char1 ALPHA = out }|. WRITE:/ lv_char1.
- 新增前導零
DATA lv_char1 TYPE c LENGTH 10. lv_char1 = '0000021211'. DATA lv_char1 TYPE c LENGTH 10. lv_char1 = '21211'. WRITE:/ lv_char1. **********************************************************************方式1 CONVERSION_EXIT_ALPHA_INPUT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_char1 IMPORTING output = lv_char1. WRITE:/ lv_char1. **********************************************************************方式2 lv_char1 = |{ lv_char1 ALPHA = IN }|. WRITE:/ lv_char1.
- 拆分字符串 SPLIT
- split 將字符傳dobj按照特定字符sep進行拆分
SPLIT dobj AT sep INTO { {result1 result2 [...]} | {TABLE result_tab} } [IN {CHARACTER|BYTE} MODE].
- split 將字符傳dobj按照特定字符sep進行拆分
- 截取字符串 SHIFT
- shift dobj up to substr [mode]
查找字符串中substr的位置,並向左截取或者向右截取字符串 - shift dobj [by n places] [mode] mode可以為left和right
字符串向左或者向右移動n個字符,如果n大於字符串的長度,則結果為空值 - shift dobj { {LEFT DELETING LEADING} | {RIGHT DELETING TRAILING} } str
把字符串中前的(LEFT)或者后的(RIGHT)的字符str都去掉
- shift dobj up to substr [mode]
- 字符替換 REPLACE
- 關鍵字寫法
- replace oldStr in fullStr with newStr 默認是只替換匹配到的第一個字符
- replace [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] oldSubStr in fullString with newSubStr.
- REPLACE SECTION [OFFSET off] [LENGTH len] OF dobj WITH new [IN {CHARACTER|BYTE} MODE].
- REPLACE {str1} WITH {str2} INTO {c} [LENGTH {l}] 該寫法已過時
- 實例代碼
data lv_str type string. data:lv_chr1 type c LENGTH 100, lv_chr2 type c length 100. lv_chr2 = '13%-一般產品-騰訊雲服務'. replace '-' in lv_chr2 with ''. write:/ lv_chr2. "13%一般產品-騰訊雲服務 lv_chr2 = '13%-一般產品-騰訊雲服務'. replace all occurrences of '-' in lv_chr2 with ''. write:/ lv_chr2. "13%一般產品騰訊雲服務 replace section offset 3 length 4 of lv_chr2 with 'test'. write:/ lv_chr2. "13%test騰訊雲服務
- 函數寫法
- 可以在部分操作位中使用,減少中間變量的使用
- replace( val = text [off = off] [len = len] with = new )
- replace(val = text {sub = substring}|{regex = regex} with = new [case = case] [occ = occ] )
- 實例代碼:
lv_chr2 = '13%-一般產品-技術'. *replace section offset 3 length 4 of lv_chr2 with 'test'. write:/ replace( val = lv_chr2 off = 3 len = 4 with = 'test'). "13%test技術 lv_chr2 = '13%-一般產品-技術'. *replace all occurrences of '-' in lv_chr2 with ''. write:/ replace( val = lv_chr2 sub = '-' with = '' occ = 0 )."13%一般產品技術 occ 可以是正數也可以為負數,0標識全部替換
- 關鍵字寫法
- 大小寫轉換
- 函數寫法
- to_upper(string)
- to_lower(string)
- 關鍵字寫法
- translate str to {UPPER|LOWER} CASE
- 實例代碼
lv_chr1 = 'abc001'. translate lv_chr1 to upper case. write:/ lv_chr1. write:/ to_lower( lv_chr1 ). translate lv_chr1 to lower case. write:/ lv_chr1. write:/ to_upper( lv_chr1 ).
- 函數寫法
- 拼接字符串
- 關鍵字 CONCATENATE
- CONCATENATE {dobj1 dobj2 ...}|{LINES OF itab} INTO result [IN {CHARACTER|BYTE} MODE] [SEPARATED BY sep] [RESPECTING BLANKS].
- &&字符
- 字符串模板
- 區別
- 使用concatenate 會忽略 需要拼接字符串的尾部空格
- 使用字符串操作符會忽略所拼接字符串的尾部空格,被拼接的第二個字符串頭部如果有多個空格,則會合並成一個
- 使用字符串模板則會去除所有拼接字符的尾部空格
- 實例代碼
data lv_str type string. data:lv_chr1 type c LENGTH 100, lv_chr2 type c length 100. lv_chr1 = ' abba '. lv_chr2 = ' dfsf '. CONCATENATE lv_chr1 lv_chr2 into data(lv_chr3) separated by ': '. write:/ lv_chr3. lv_chr3 = lv_chr1 && ': ' && lv_chr2. write:/ lv_chr3. write:/ |{ lv_chr1 }:{ lv_chr2 }|.
- 關鍵字 CONCATENATE
- 壓縮字符
- 關鍵字 CONDENSE
- condense string [no-gaps]. 沒有no-gaps時,會將首尾的空格移除並將字符串中間的多個空格壓縮成1個,如果使用了no-gaps則刪除所有空格。
- 函數 CONDENSE
- condense( [val =] text [del = del] [from = from] [to = to] )
如果del不為空,則字符串中已del開頭和結尾的部分都會刪除,如果為空,則不會有刪除。
如果from有值,則會將字符串中跟from值匹配的子字符替換為to的第一個字符。
del、from、to 的默認值都是空格。
- condense( [val =] text [del = del] [from = from] [to = to] )
- 實例代碼
data lv_str type string. data:lv_chr1 type c LENGTH 100, lv_chr2 type c length 100. lv_chr1 = ' ERROR\ 處理出錯 \ MSG \錯誤 '. condense lv_chr1 . write:/ lv_chr1. "ERROR\ 處理出錯 \ MSG \錯誤 condense lv_chr1 no-gaps. write:/ lv_chr1. "ERROR\處理出錯\MSG\錯誤 lv_chr1 = ' ERROR\ 處理出錯 \ MSG \錯誤 '. write:/ condense( lv_chr1 ). "ERROR\ 處理出錯 \ MSG \錯誤 write:/ condense( val = lv_chr1 to = ''). "ERROR\ 處理出錯 \ MSG \錯誤 write:/ condense( val = lv_chr1 from = 'ERROR' to = 'ERR'). "E\ 處理出錯 \ MSG \錯誤
- 關鍵字 CONDENSE
- 查找字符串
- 函數FIND
- 關鍵字 FIND
- 語法
FIND [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] pattern IN [SECTION [OFFSET off] [LENGTH len] OF] dobj [IN {CHARACTER|BYTE} MODE] [find_options]
- substr 不能為空字符
- find關鍵字的效率要高於操作符 cs
- 關鍵字 serch 已經被標記為過時的寫法
- 語法