1,连接字符串:将几个字符串连接起来,形成一个新的字符串,可以使用CONCATENATE语句,SEPARATED BY用于指定一个字符(串)作为分隔符,在构成新字符串时插入s1...sn之间。
简单实例:
REPORT z_string_con.
DATA: s1(9) TYPE c VALUE 'FName',
s2(10) TYPE c VALUE 'SName',
s3(20),
sep(1) TYPE c VALUE '.'.
CONCATENATE s1 s2 INTO s3.
WRITE / s3.
CONCATENATE s1 s2 INTO s3 SEPARATED BY sep.
WRITE / s3.
输出结果如下:
FNameSName
FName.SName
注意所有字符串操作将忽略s1...sn中的尾部空格
2,拆分字符串:使用SPLIT语句将字符串拆分成多个小串。
语法:SPLIT s_source AT sep INTO s1 ... sn.
REPORT z_string_split.
DATA: text TYPE string,
itab TYPE TABLE OF string.
text = 'YOU ARE GOOD BOY'.
SPLIT text AT space INTO TABLE itab.
LOOP AT itab INTO text.
WRITE / text.
ENDLOOP.
space其实就是text字字符串中的空格,语句LOOP AT用于循环出内表的每一行数据
输出结果:
YOU
ARE
GOOD
语法:SEARCH c FOR str.
模式:
str 搜索str并忽略尾部空格。
.str. 搜索str,但忽略尾部空格。
*str 搜索以str结尾的单词。
str* 搜索以str开头的单词。
简单实例:
REPORT z_string_search.
DATA: string(30) TYPE c VALUE 'This is a testing sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.
SEARCH string FOR 'x'.
WRITE: / 'x', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR 'itt '.
WRITE: / 'itt ', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR '.e.'.
WRITE: / '.e.', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR '*e'.
WRITE: / '*e', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR 's*'.
WRITE: / 's*', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
输出结果:
Searched SY-SUBRC SY-FDPO
x 4 0
itt 4 0
.e. 4 0
*e 0 18
s* 0 18
4,替换字段内容:用其他字符串替换字段的某些部分,使用REPLACE语句。
语法:REPLACE str1 WITH str2 INTO s_dest [LENGTH len].
对字段s_dest进行搜索,如果出现str1,则用str2替换第一次出现的部分。len指定搜索长度,替换成功了SY-SUBRC返回0,非则未进行任何替换。
简单实例:
REPORT z_replace.
DATA: name TYPE string.
name = 'Michael-Cheong'.
WHILE sy-subrc = 0.
REPLACE '-' WITH ' ' INTO name.
ENDWHILE.
WRITE / name.
输出结果:Michael Cheong
5,确定字符串长度:从首字符到最后一个非空字符的长度,即不帮扩结尾空格,使用STRLEN。
语法:[COMPUTE] n = STRLEN( str ).
简单实例:
REPORT z_strlen.
DATA: text(24) TYPE c VALUE 'ABAP Language',
len TYPE i.
len = strlen( text ).
WRITE: / 'Length of', text, 'is', len.
输出结果:Length of ABAP Language is 13
6,其他操作语句:
SHIFT 截断字符串
CONDENSE 删除多余空格
TRANSLATE 字符转换
CONVERT TEXT 创建可排序的格式
OVERLAY 字符覆盖
语法:CONCATENATE s1 ... sn INTO s_dest [SEPARATED BY sep].
其中s_dest也可以是s1...sn中的某个变量。
REPORT z_string_con.
DATA: s1(9) TYPE c VALUE 'FName',
s2(10) TYPE c VALUE 'SName',
s3(20),
sep(1) TYPE c VALUE '.'.
CONCATENATE s1 s2 INTO s3.
WRITE / s3.
CONCATENATE s1 s2 INTO s3 SEPARATED BY sep.
WRITE / s3.
输出结果如下:
FNameSName
FName.SName
注意所有字符串操作将忽略s1...sn中的尾部空格
2,拆分字符串:使用SPLIT语句将字符串拆分成多个小串。
语法:SPLIT s_source AT sep INTO s1 ... sn.
在源字符串中搜索分隔符(串)sep,根据该分隔符将源字符串拆分成各个小串,然后放到目标字段s1 ... sn中,但是子字符串中不包括分隔符。
语法:SPLIT s_source AT sep INTO TABLE itab.
若源字符串能够拆分的子串多过指定数目,则使用内表操作,该形式根据子串数生成n行的内表
简单实例:REPORT z_string_split.
DATA: text TYPE string,
itab TYPE TABLE OF string.
text = 'YOU ARE GOOD BOY'.
SPLIT text AT space INTO TABLE itab.
LOOP AT itab INTO text.
WRITE / text.
ENDLOOP.
space其实就是text字字符串中的空格,语句LOOP AT用于循环出内表的每一行数据
输出结果:
YOU
ARE
GOOD
BOY
3,查找子串模式:在一个字符串中找到一个子字符串,使用SEARCH语句。找到则将SY-SUBRC返回0否则返回4,SY-FDPOS返回在该字符串的位置语法:SEARCH c FOR str.
模式:
str 搜索str并忽略尾部空格。
.str. 搜索str,但忽略尾部空格。
*str 搜索以str结尾的单词。
str* 搜索以str开头的单词。
简单实例:
REPORT z_string_search.
DATA: string(30) TYPE c VALUE 'This is a testing sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.
SEARCH string FOR 'x'.
WRITE: / 'x', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR 'itt '.
WRITE: / 'itt ', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR '.e.'.
WRITE: / '.e.', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR '*e'.
WRITE: / '*e', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string FOR 's*'.
WRITE: / 's*', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
输出结果:
Searched SY-SUBRC SY-FDPO
x 4 0
itt 4 0
.e. 4 0
*e 0 18
s* 0 18
4,替换字段内容:用其他字符串替换字段的某些部分,使用REPLACE语句。
语法:REPLACE str1 WITH str2 INTO s_dest [LENGTH len].
对字段s_dest进行搜索,如果出现str1,则用str2替换第一次出现的部分。len指定搜索长度,替换成功了SY-SUBRC返回0,非则未进行任何替换。
简单实例:
REPORT z_replace.
DATA: name TYPE string.
name = 'Michael-Cheong'.
WHILE sy-subrc = 0.
REPLACE '-' WITH ' ' INTO name.
ENDWHILE.
WRITE / name.
输出结果:Michael Cheong
5,确定字符串长度:从首字符到最后一个非空字符的长度,即不帮扩结尾空格,使用STRLEN。
语法:[COMPUTE] n = STRLEN( str ).
简单实例:
REPORT z_strlen.
DATA: text(24) TYPE c VALUE 'ABAP Language',
len TYPE i.
len = strlen( text ).
WRITE: / 'Length of', text, 'is', len.
输出结果:Length of ABAP Language is 13
6,其他操作语句:
SHIFT 截断字符串
CONDENSE 删除多余空格
TRANSLATE 字符转换
CONVERT TEXT 创建可排序的格式
OVERLAY 字符覆盖