字符串首字符索引为 0;
1. 字符串连接
CONCATENATE dobj1 dobj2 ...
2.字符串分隔, split 一个string的部分到一个内表或一系列的变量
SPLIT dobj AT sep INTO
3. 字符串查找, 在一个字符串中查找模式串(FIND or SEARCH)
FIND sub_string
FIND 'knows'
在字符串dobj中查找pattern
SEARCH dobj FOR pattern
if sy-subrc = 0. then SY-FDPOS =
About pattern:
'pat'
'.pat.' -不忽略尾部空格
'*pat' - 以pat结尾
'pat*' - 以pat开始
单词是指: 用 空格 , ; : ? !
() / + =分隔的字串
4. 字符串替换
REPLACE SECTION [OFFSET off] [LENGTH len]
REPLACE [{FIRST
OCCURRENCE}|{ALL OCCURRENCES} OF]
eg:
DATA: text1 TYPE string VALUE 'xababx'.
REPLACE 'ab' IN text1 WITH 'xx'. --> xxxabx
5. 去前导0 (Remove leading zero)
SHIFT dobj LEFT DELETING LEADING '0'.
FM : CONVERSION_EXIT_ALPHA_OUTPUT
增前导0 (Add leading
zero)
DATA v_s(5).
UNPACK '123' to v_s.
FM:
SHIFT dobj
SHIFT dobj
6. 字符串的长度, 内表的行数
7. 删字符串中的空格: CONDENSE text [NO-GAPS].
8.
大小写转换,字符变换
TRANSLATE text {TO {UPPER|LOWER} CASE} | {USING pattern}.
eg: text = `Barbcbdbarb`.
TRANSLATE text USING 'ABBAabba'. =>'Abracadabra'
9. CONVERT
CONVERT DATE dat [TIME tim [DAYLIGHT SAVING TIME dst]]
CONVERT TIME STAMP
time_stamp TIME ZONE tz
CONVERT TEXT text INTO SORTABLE CODE hex.
10. OVERLAY text1 WITH text2
[ONLY pattern].
如果不指定后面的ONLY pattern, text1中的空格会被text2中的对应字符替代
如果指定只有匹配的字符才会被替代,注意大小写敏感
11. 模式匹配
CO / CN
CA / NA contains any or not any
CS / NS contain string or not
CP / NP contains pattern or not
NOTE:
a) . CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内
data: s1(10) value 'aabb'.
if s1 co 'ab' ==> false
if s1 co 'ab ' ==>true
CS, NS, CP, NP不区分大小写和尾部空格
b) .对于CP, NP
*
+ = s
#
c) . 比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息
12. 特殊字符
在字符串中加入回车换行或TAB字符,在其他语言可以使用$13$10这样的ASCII码进行插入.但在ABAP中要使用sap的类CL_ABAP_CHAR_UTILITIES. 里面有字符常量:CR_LF,HORIZONTAL_TAB,NEWLINE等等.
13. 字符串位操作
DATA: v_s(10) value 'abcd'.
v_s+0(1) = 'b'.
v_s+2(*) = '12'.
=>