SPLIT dobj AT sep INTO { {result1 result2 ...} | {TABLE result_tab} }

必须指定足够目标字段。否则,用字段dobj的剩余部分填充最后目标字段并包含分界符;或者使用内表动态接收

DATA: L_STR TYPE STRING,

L_STR1 TYPE C,

L_STR2 TYPE C.

DATA: BEGIN OF LT_STR OCCURS 0,

STR TYPE C,

END OF LT_STR.

L_STR = '1/2'.

SPLIT L_STR AT '/' INTO L_STR1 L_STR2. "根据‘/’截断字符创 L_STR 放于L_STR1、L_STR2

WRITE: L_STR1,L_STR2,/.

SPLIT L_STR AT '/' INTO TABLE LT_STR. "根据‘/’截断字符创 L_STR 放于表LT_STR

LOOP AT LT_STR.

WRITE: LT_STR-STR,/.

ENDLOOP.

SHIFT dobj { [ {BY num PLACES} | { UP TO sub_string } ] [ [ LEFT|RIGHT ] [ CIRCULAR ] ] }

​| { { LEFT DELETING LEADING } | { RIGHT DELETING LEADING } } pattern

对于固定长度字符串类型,shift产生的空位会使用空格或十六进制的0(如果为X类型串时)来填充

向右移动时前面会补空格,固定长度类型字符串与String结果是不一样:String类型右移后不会被截断,只是字串前面补相应数量的空格,但如果是C类型时,则会截断;左移后后面是否被空格要看是否是固定长度类型的字符串还是变长的String类型串,左移后C类型会补空格,String类型串不会(会缩短)

CIRCULAR:将移出的字符串放在左边或者左边

pattern:只要前导或尾部字符在指定的pattern字符集里就会被去掉,直到第一个不在模式pattern的字符止

DATA(STR) = `0123456789`.

SHIFT STR."打印出 123456789

DATA: TEXT TYPE STRING VALUE 'I know you know',

OFF TYPE I.

FIND 'you' IN TEXT MATCH OFFSET OFF.

SHIFT TEXT BY OFF PLACES."从 ‘you’ 的地方截断字符串TEXT,保留'you' 和之后的字符串 you know

*SHIFT TEXT UP TO 'you'."从 ‘you’ 的地方截断字符串TEXT,保留'you' 和之后的字符串 you know

DATA(TEXT) = '0123456789'.

*SHIFT TEXT RIGHT."从右边截断第一个字符012345678

SHIFT TEXT LEFT."从左边截断第一个字符123456789

SHIFT TEXT UP TO 'you' LEFT CIRCULAR."打印出来是 ‘you know I know’

SHIFT TEXT UP TO 'you' RIGHT CIRCULAR. "打印出来是 ‘know I know you’

DATA(xstr) = CONV xstring( `AABBCCDDEEFF` ).

SHIFT xstr IN BYTE MODE. "打印出来 BBCCDDEEFF

DATA TEXT TYPE STRING VALUE `I know you know `.

SHIFT TEXT RIGHT DELETING TRAILING 'no kw'. "I know you

DATA TXT TYPE STRING VALUE '0000011111'.

SHIFT TXT RIGHT DELETING TRAILING '1'. "00000

SHIFT TXT LEFT DELETING LEADING '0'. "11111

CONDENSE [NO-GAPS].

如果是C类型只去掉前面的空格(因为是定长,即使后面空格去掉了,左对齐时后面会补上空格),如果是String类型,则后面空格也会被去掉;

字符串中间的多个连续的空格使用一个空格替换(String类型也是这样);

NO-GAPS:字符串中间的所有空格都也都会去除(String类型也是这样);空格去掉后会左对齐

DATA: BEGIN OF SENTENCE,

WORD1 TYPE C LENGTH 30 VALUE 'She',

WORD2 TYPE C LENGTH 30 VALUE 'feeds',

WORD3 TYPE C LENGTH 30 VALUE 'you',

WORD4 TYPE C LENGTH 30 VALUE 'tea',

WORD5 TYPE C LENGTH 30 VALUE 'and',

WORD6 TYPE C LENGTH 30 VALUE 'oranges',

END OF SENTENCE,

TEXT TYPE STRING.

TEXT = SENTENCE.

CONDENSE TEXT." She feeds you tea and oranges

CONDENSE TEXT NO-GAPS."Shefeedsyouteaandoranges

CONCATENATE { dobj1 dobj2 ...} | { LINES OF itab } INTO result [SEPARATED BY sep] [RESPECTING BLANKS].

C、D、N、T类型的前导空格会保留,尾部空格都会被去掉,但对String类型所有空格都会保留;对于C、D、N、T类型的字符串有一个RESPECTING BLANKS选项可使用,表示尾部空格也会保留。注:使用 `` 对String类型进行赋值时才会保留尾部空格

TYPES HEX TYPE X LENGTH 1.

DATA ITAB TYPE TABLE OF HEX WITH EMPTY KEY.

ITAB = VALUE #(

( CONV HEX( '48' ) )

( CONV HEX( '65' ) )

( CONV HEX( '6C' ) )

( CONV HEX( '6C' ) )

( CONV HEX( '6F' ) ) ).

CONCATENATE LINES OF ITAB INTO DATA(XSTR) IN BYTE MODE."48656C6C6F

strlen(arg)、Xstrlen(arg)

String类型的尾部空格会计入字符个数中,但C类型的变量尾部空格不会计算入

DATA: STR TYPE STRING VALUE `12345 `,

TXT TYPE C LENGTH 10 VALUE '12345 ',

LEN TYPE I.

LEN = STRLEN( STR )."10

LEN = STRLEN( TXT )."5

substring( val = TEXT [off = off] [len = len] )

DATA RESULT TYPE STRING.

RESULT = SUBSTRING( VAL = 'ABCDEFGH' OFF = 2 LEN = 2 )."CD

RESULT = SUBSTRING_FROM( VAL = 'ABCDEFGH' SUB = 'CD' )."CDEFGH

RESULT = SUBSTRING_AFTER( VAL = 'ABCDEFGH' SUB = 'CD' )."EFGH

RESULT = SUBSTRING_BEFORE( VAL = 'ABCDEFGH' SUB = 'CD' )."AB

RESULT = SUBSTRING_TO( VAL = 'ABCDEFGH' SUB = 'CD' )."ABCD

count( val = TEXT {sub = substring}|{regex = regex} )

匹配指定字符串substring或正则式regex出现的子串次数,返回的类型为i整型类型

DATA(RESULT1) = COUNT( VAL = `xxx123yyy` REGEX = `\d+` )."1

DATA(RESULT2) = COUNT_ANY_OF( VAL = `xxx123yyy` SUB = `123` )."3

DATA(RESULT3) = COUNT_ANY_NOT_OF( VAL = `xxx123yyy` SUB = `x` )."6

match( val = TEXT REGEX = REGEX occ = occ)

返回的为匹配到的字符串。注:每次只匹配一个。

occ:表示需匹配到第几次出现的子串。如果为正,则从头往后开始计算,如果为负,则从尾部向前计算

MATCH( VAL = 'x1 x2 x3' REGEX = 'x.' OCC = 2 )"x2

find( val = TEXT {sub = substring}|{regex = regex}[occ = occ] )

查找substring或者匹配regex的子串的位置。如果未找到,则返回 -1,返回的为offset,所以从0开始

DATA(RESULT1) = FIND( VAL = `xxx123yyy` REGEX = `\d+` )."3

DATA(RESULT2) = FIND_END( VAL = `xxx123yyy` REGEX = `\d+` )."6

DATA(RESULT3) = FIND_ANY_OF( VAL = `xxx123yyy` SUB = `123` )."3

DATA(RESULT4) = FIND_ANY_NOT_OF( VAL = `xxx123yyy` SUB = `x` )."3

abap 字符串操作_ABAP-字符串常用处理方法相关推荐

  1. js如何操作表格(常用属性方法汇总)

    js如何操作表格(常用属性方法汇总) 一.总结 一句话总结: 二.表格相关的属性和方法 1.1 Table 对象集合 cells[] 返回包含表格中所有单元格的一个数组. 语法:tableObject ...

  2. python字符串的方法和列表的方法_Python学习笔记字符串操作之join()和split()方法,列表转字符串,字符串转列表...

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  3. python字符串操作_Python 字符串操作 - 树懒学堂

    字符串操作 由于Python在字符串和文本操作上的便利性,使Python成为一个流行的原生数据集操作语言已经有很长时间了.字符串对象的内建方法使得大部分文本操作非常简单.对于更为复杂的模式匹配和文本操 ...

  4. Python(IT峰)笔记05-数据类型详解:字符串、转义字符,字符串操作,字符串格式化,英文字符,字符串查找,字符串操作

    1.字符串的定义 单引号 双引号 三引号 字符串定义时,引号可以相互嵌套 2.转义字符 斜杠\转义符,续行符.转义符可转义,在末尾可续行 strs='hello'\'wolrd' print(strs ...

  5. python字符串操作_python字符串操作

    6.1 处理字符串 原始字符串:在字符串开始的引号之前加上r,使它成为原始字符串."原始字符串"完全忽略所有的转义字符,打印出字符串中的所有倒斜杠. 用三重引号的多行字符串:多行字 ...

  6. 【牛客】1. 字符串操作 <字符串>

    腾讯音乐娱乐集团2023校园招聘技术类岗位编程题一 1.字符串操作 给定一个只包含小写字母字符串,每次可以选择两个相同的字符删除,并在字符串结尾新增任意一个小写字母.请问最少多少次操作后,所有的字母都 ...

  7. 【C 语言】字符串操作 ( C 字符串 | 字符数组始化 )

    文章目录 一.C 字符串 二.字符数组始化 一.C 字符串 C 字符串特征 : C 语言中的字符串都是以 '\0'字符 结尾的 字符数组 ; C 字符串本质 : C 中 没有字符串类型 , 都是使用 ...

  8. Python 字符串操作之字符串的截取

    字符串的截取 字符串的截取是实际应用中经常使用的技术,被截取的部分称为"子串".Java中使用函数substr()获取子串,C#使用函数substring()获取子串.而Pytho ...

  9. php的字符串操作,PHP 字符串操作

    关于PHP字符串的操作函数 代码如下: //addcslashes() 在字符 "A" 之前添加一个反斜杠 $a = "abcdefg"; $value = a ...

  10. 【Kotlin】字符串操作 ① ( 截取字符串函数 substring | 拆分字符串函数 split | 解构语法特性 )

    文章目录 一.截取字符串函数 substring 二.拆分字符串函数 split 一.截取字符串函数 substring Kotlin 中提供了 截取字符串函数 substring , 可接收 Int ...

最新文章

  1. 《自然》 脑机接口新突破 人脑信号转文本准确率达97%
  2. C++阶段01笔记08【结构体(基本概念、定义与使用、数组、指针、嵌套、const使用)】
  3. 函数语法:Js之on和addEventListener的使用与不同
  4. java jpa 异步编程_异步处理时的JPA
  5. 静态网页制作作业_HTML CSS复习之制作静态网页
  6. 美股第三次熔断!一觉醒来,苹果损失了1.5亿部iPhone 11 Pro
  7. 拓端tecdat|R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
  8. python三天简单学习Day2
  9. 前端开发必须知道的JS(二) 闭包及应用
  10. SPSS下载安装教程
  11. 在移动硬盘(SDD)上装ubuntu18.04
  12. SSD硬盘的数据恢复
  13. PWM原理 PWM频率与占空比详解
  14. LVGL lv_btn 按钮(9)
  15. C#调用存储过程带输出参数或返回值分类(转)
  16. Linux安装rsync命令失败,rsync 常见错误与解决方法整理
  17. 智能交通系统(ITS)的无线网络技术
  18. Dart | Flutter 中的异常处理框架 Talker
  19. 苹果M1芯片和酷睿i9哪个更好
  20. Chatgpt人工智能的聊天机器人来给软件测试人员的影响是什么?

热门文章

  1. 如何使用IBM SPSS Statistics统计两个变量的交叉频率分布
  2. IDEA整合Tomcat启动javaweb项目
  3. 腾讯专家分享:腾讯做业务监控的心得和经验
  4. 计算机二级C语言学习笔记(一)
  5. CentOS7 Thinkpad T450 安装Intel Wireless 7265-N无线网卡驱动
  6. word和excel测试软件,办公软件使用测试题(Word、Excel)
  7. 会声会影支持服务器,会声会影各种问题总结以及解决方法-
  8. 层层递进打造你的重试机制
  9. 龙星计划-机器学习分享
  10. LAZADA的店铺授权