ABAP 字符串处理 CONCATENATE SPLIT STRLEN CONDENSE SEARCH OVERLAY

CONCATENATE连接字符串

CONCATENATE会去除字符串后面的空格

CONCATENATE str1 str2 INTO str SEPARATED BY ' '.
两个拼接字符会以空格分开
CONCATENATE str1 str2 INTO str SEPARATED BY '-'.
两个拼接字符会以-分开
CONCATENATE str1 str2 INTO str5 RESPECTING BLANKS.
两个拼接字符会保留末尾的空位(如果有的话)

SPLIT拆分字符串

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.

在这里插入图片描述

获得字符串长度STRLEN

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.

在这里插入图片描述

删除字段中空格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.

在这里插入图片描述

搜索字符串SEARCH

SEARCH <c> FOR <str> <options>.
该语句在字 段 <c> 中搜索<str> 中的字符串 。如果成功 ,则将 SY-SUBRC 的返回代码 值设置为0,并将 SY-FDPOS 设置为字段 <c> 中该字符串 的偏移量。

否则将 SY-SUBRC 设置为4。

搜索串 <str> 可为下列格 式之一:

<str>                       目 的

---------------------------------

<pattern>                 搜 索 <pattern>(任何字符顺序)。忽略尾部空格。

.<pattern>.               搜 索 <pattern> ,但是不忽略尾部空格 。

*<pattern>               搜 索以 <pattern> 结尾的词。

<pattern>*               搜 索以 <pattern> 开始的词。

单词之间用 空格、逗号 、句号、分 号、冒号、 问号、叹号 、括号、斜 杠、加号和等号等分隔 。
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'.

在这里插入图片描述

搜索字符字 段 <c> 的各种选项 (<options>) 如下:

ABBREVIATED
在字段 <c> 中搜索包含 <str> 中的单词, 其中字符可以被其它字符隔开,但是单词和字符串的第一个字母必须相同 。

 STARTING AT <n1>
在字段 <c> 中搜索从 <n1> 开始的 <str> 。结果 SY-FDPOS 参照相对于 <n1> 的偏移量而 不是字段的 开始。

ENDING AT <n2>
在字段 <c> 搜索 <str> 直到位置 <n2>。

 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.

在这里插入图片描述

覆盖字符字段OVERLAY

OVERLAY <c1> WITH <c2> [ONLY <str>].

该语句用字符串 中相应位置上的内容“覆盖” 字段 中包含 中字母的所有位置。 保持不变。
如果省略 ONLY , 则覆盖字段 中所有包含空格的位置 ,如果没有空格,则不会被“覆盖”。 如果至少要替换 中的一个字 符,则将 SY-SUBRC 设置为 0。对于所有其它情况 ,将SY-SUBRC 设置为 4。
如果 比 长,则只覆 盖 中的长度。
解释:
注意是"覆盖"不是”替换“!!!!!!!!!

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.

在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值