zl程序教程

您现在的位置是:首页 >  后端

当前栏目

ABAP中字符串处理方法小结(一)详解编程语言

方法编程语言 详解 处理 字符串 小结 ABAP
2023-06-13 09:11:51 时间

ABAP中字符串处理方法小结(一)详解编程语言


img >

2, 连接字符串Concatenate

语法:

CONCATENATE c1 ... cn INTO c [SEPARATED BY s ].

代码:

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.

显示结果:

ABAP中字符串处理方法小结(一)详解编程语言


img >

在 C1 到 C5 之间,忽略 尾部空格。 分隔符 SEP 保留尾部空格。

3, 获得字符串长度STRLEN

语法:

[COMPUTE] n = STRLEN( c ).

代码:

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.

显示结果:

ABAP中字符串处理方法小结(一)详解编程语言


img >

请注意,STRLEN 将操作数 c 作为字符数 据类型处理 ,而不考虑 其实际类型 。不进行转换。

4, 删除字段中空格CONDENSE

语法:

CONDENSE c [NO-GAPS].

该语句去除字段 c 中的前导空格并用一个空格替换其它空格序列 。结果是左对齐单词, 每个单词用空格隔开。 如果指定附 加的 NO-GAPS, 则去除所有空格。

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.

显示结果:

ABAP中字符串处理方法小结(一)详解编程语言


img >

请注意,字段 STRING 的总长度保持不变(注意!的位置),但删除的空格再次出现在右边。

5, 搜索字符串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.

显示结果:

ABAP中字符串处理方法小结(一)详解编程语言


img >

搜索字符字 段 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.

ABAP中字符串处理方法小结(一)详解编程语言


img >

6, 覆盖字符字段OVERLAY

语法:

OVERLAY c1 WITH c2 [ONLY str ].

该语句用字符串 c2 中相应位置上的内容“覆盖” 字段 c1 中包含 str 中字母的所有位置。 c2 保持不变。

如果省略 ONLY str , 则覆盖字段 c1 中所有包含空格的位置 ,如果没有空格,则 c1 不会被“覆盖”。 如果至少要替换 c1 中的一个字 符,则将 SY-SUBRC 设置为 0。对于所有其它情况 ,将SY-SUBRC 设置为 4。

如果 c1 比 c2 长,则只覆 盖 c2 中的长度。

解释:

注意是 覆盖 不是”替换“!!!!!!!!!

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.

显示结果:

ABAP中字符串处理方法小结(一)详解编程语言


img >

T 与 OVER 的长度都是10。

以上。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19247.html

cjava