1, 拆分字符串split
语法:
SPLIT INTO
代码:
DATA: STRING(60),P1(20) VALUE '',P2(20) VALUE '',P3(20) VALUE '',P4(20) VALUE '',DEL(3) VALUE '***'.
STRING = ' Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5'.
WRITE STRING.
SPLIT STRING AT DEL INTO P1 P2 P3 P4.
WRITE: /'P1:' , P1.
WRITE: /'P2:' , P2.
WRITE: /'P3:' , P3.
WRITE: /'P4:' , P4.
2, 连接字符串Concatenate
语法:
CONCATENATE ].
代码:
DATA: C1(10) VALUE 'Sum',C2(3) VALUE 'mer',C3(5) VALUE 'holi ',C4(10) VALUE 'day',C5(30),SEP(3) VALUE ' - '.
CONCATENATE C1 C2 C3 C4 INTO C5.
WRITE C5.
CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED BY SEP.
WRITE / C5.
显示结果:
在 C1 到 C5 之间,忽略 尾部空格。 分隔符 SEP 保留尾部空格。
3, 获得字符串长度STRLEN
语法:
[COMPUTE]
代码:
DATA: int TYPE i,word1(20) TYPE c VALUE '12345',word2(20) TYPE c,word3(20) TYPE c VALUE ' 4 '.
int = strlen( word1 ).
WRITE int.
int = strlen( word2 ).
WRITE / int.
int = strlen( word3 ).
WRITE / int.
显示结果:
请注意,STRLEN 将操作数
4, 删除字段中空格CONDENSE
语法:
CONDENSE
该语句去除字段
DATA: STRING(25) VALUE ' one two three four',LEN TYPE I.
LEN = STRLEN( STRING ).
WRITE: STRING, '!'.
WRITE: / 'Length: ', LEN.
CONDENSE STRING.
LEN = STRLEN( STRING ).
WRITE: STRING, '!'.
WRITE: / 'Length: ', LEN.
CONDENSE STRING NO-GAPS.
LEN = STRLEN( STRING ).
WRITE: STRING, '!'.
WRITE: / 'Length: ', LEN.
显示结果:
请注意,字段 STRING 的总长度保持不变(注意!的位置),但删除的空格再次出现在右边。
5, 搜索字符串SEARCH
语法:
SEARCH
该语句在字 段
否则将 SY-SUBRC 设置为4。
搜索串
---------------------------------
.
*
单词之间用 空格、逗号 、句号、分 号、冒号、 问号、叹号 、括号、斜 杠、加号和等号等分隔 。
代码:
DATA STRING(30) VALUE 'This is a little sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.
ULINE /1(26).
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'.
显示结果:
搜索字符字 段
- ABBREVIATED
在字段
- STARTING AT
在字段
- ENDING AT
在字段
- AND MARK
如果找到搜索串,则将搜索串中的所有字符(使用 ABBREVIATED 时的所有字 符)转换为大写形式。
代码:
DATA: STRING(30) VALUE 'This is a fast first example.',POS TYPE I,OFF TYPE I.
WRITE / STRING.
SEARCH STRING FOR 'ft' ABBREVIATED.
WRITE: / 'SY-FDPOS:', SY-FDPOS.
POS = SY-FDPOS + 2.
SEARCH STRING FOR 'ft' ABBREVIATED STARTING AT POS AND MARK.
WRITE / STRING.
WRITE: / 'SY-FDPOS:', SY-FDPOS.
OFF = POS + SY-FDPOS - 1.
WRITE: / 'Off:', OFF.
请注意,在 找到单词‘ fast’ 之后,为了 查找包含‘ ft’的第 二个单词, 必须在偏移 量 SY-FDPOS 上加2,然 后从位置 POS 开始查找。 否则,会再 次找到单词 ‘fast’ 。要获得‘ first’ 相对于字段 STRING 开始的偏移 量,从 POS 和 SY-FDPOS 计算。
字符串: 'Aaa-Bbb' 如何判断字符串中含有 '-'?
并且将 '-' 后面的字符舍去?
DATA string(20) VALUE 'Aaa-Bbb'.SEARCH string FOR '-'.
IF sy-subrc = 0. string = string+0(sy-fdpos). WRITE string.
ENDIF.
6, 覆盖字符字段OVERLAY
语法:
OVERLAY
该语句用字符串
如果省略 ONLY
如果
解释:
注意是"覆盖"不是”替换“!!!!!!!!!
OVER '1 2 3' WITH '456 '.
结果为:152 3。
OVER '1 2 3' WITH '456' only '12'.
结果为:4 6 3 。
OVER '123' WITH '456'.
结果为:123。(没有空格)
OVER '1 2 3 ' WITH '456 ' only '13' .
结果为:4 2 。
代码:
DATA: T(10) VALUE 'a c e g i ',STRING LIKE T,OVER(10) VALUE 'ABCDEFGHIJ',STR(2) VALUE 'ai'.
STRING = T.
WRITE STRING.
WRITE / OVER.
OVERLAY STRING WITH OVER.
WRITE / STRING.
STRING = T.
OVERLAY STRING WITH OVER ONLY STR.
WRITE / STRING.
显示结果:
T 与 OVER 的长度都是10。
以上。