ABAP中的字符串操作

1,连接字符串:将几个字符串连接起来,形成一个新的字符串,可以使用CONCATENATE语句,SEPARATED BY用于指定一个字符(串)作为分隔符,在构成新字符串时插入s1...sn之间。

语法: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 字符覆盖

猜你喜欢

转载自blog.csdn.net/littlemangoyx/article/details/80110251
今日推荐