热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ABAP中字符串处理方法小结(一)

1, 拆分字符串split 语法: SPLIT AT INTO ... . 代码: DATA: STRING(60),P1(20) VALUE '&#

1, 拆分字符串split

语法:

SPLIT AT 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 ... INTO [SEPARATED BY ].

代码:

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] = 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.

显示结果:

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

4, 删除字段中空格CONDENSE

语法:

CONDENSE [NO-GAPS].

该语句去除字段 中的前导空格并用一个空格替换其它空格序列 。结果是左对齐单词, 每个单词用空格隔开。 如果指定附 加的 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.

显示结果:

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

5, 搜索字符串SEARCH

语法:

SEARCH FOR .

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

否则将 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

在字段 中搜索从 开始的 。结果 SY-FDPOS 参照相对于 的偏移量而 不是字段的 开始。

  • 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 WITH [ONLY ].

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

如果省略 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.

显示结果:

T 与 OVER 的长度都是10。

以上。

转:https://www.cnblogs.com/datie/p/11434557.html




推荐阅读
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
author-avatar
记者刘方斌_304
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有