1.创建字符串
上面的代码产生以下输出:
2.计算字符串长度
STRLEN()函数用于返回字符串中包含的字符数(计算字符串的长度)
上面的代码产生以下输出:
提示Tips:使用STRLEN()函数时,注意该函数括号内要空格,不然语法会报错
3.字符串拼接
我们可以使用CONCATENATE()函数对字符串进行拼接操作
语法格式
CONCATENATE f1...fn INTO g [SEPARATED BY h].
SEPARATED BY表示在连接字符串中加入分隔符号
上面的代码产生以下输出:
CONCATENATE()函数只能拼接字符型字段
使用CONCATENATE拼接字符串时默认会去除结尾的空字符,若需保留空字符则需要在结尾使用RESPECTING BLANKS关键字进行声明
上面的代码产生以下输出:
我们也可以使用&&进行字符串拼接
上面的代码产生以下输出:
4.去除字符串多余空格
语法格式
CONDENSE c <NO-GAPS>.
CONDENSE语句用于删除字段之间的空格,但只保留1个字符的空格
NO-GAPS是CONDENSE语句的可选项,用于删除所有空格
上面的代码产生以下输出:
提示Tips: 系统会自动去除字符串后面的空格
上面的代码产生以下输出:
5.字符串替换
语法格式
REPLACE <str1> WITH <str2> INTO <c> [LENGTH <l>].
将字符串<c>中的<str1>用<str2>进行替换
上面的代码产生以下输出:
上面的代码产生以下输出:
6.字符串拆分
语法格式
SPLIT <c> AT <del> INTO <c1> ... <cn>.
在字符串<c>搜索分界字符<del>,并将分界字符之前和之后的部分放到目标字段<c1> ... <cn>中
上面的代码产生以下输出:
上面的代码产生以下输出:
7.字符串截取
使用字符串+数字(数字)的方式可用于截取部分字符串
其中第一个数字表示起始位置,括号中的数字表示截取的长度
例如:+0(4)就表示从左往右截取从第一个字符位置开始的4个字符
上面的代码产生以下输出:
上面的代码产生以下输出:
8.字符串查找
语法格式1
SEARCH f FOR g.
表示从字符串f中搜索字符串g,查询的结果会回存至SY-SUBRC和SY-FDPOS两个系统变量中
① SY-SUBRC的返回值为0时,表示查找成功;返回值为4时,表示查找失败
② 某段字符在字符串中的具体位置保存在系统变量SY-FDPOS中
③ 若某段字符能够在字符串中被找到,则SY-SUBRC为0,SY-FDPOS存储该段字符在字符串中开始的位置; 若找不到,则SY-SUBRC为4,SY-FDPOS为0
上面的代码产生以下输出:
语法格式2
* 从指定字符串f中按顺序搜索相匹配字符串g
SEARCH f FOR g ABBREVIATED.
* 从指定字符串f中的第n1个字符开始搜索匹配字符串g
SEARCH f FOR g STARTING AT n1.
* 从指定字符串f中搜索匹配相关字符串g,直到搜索到字符串f的第n2个字符为止
SEARCH f FOR g ENDING AT n2.
* 从指定字符串f中模糊搜索相匹配字符串g
SEARCH f FOR g AND MARK.
上面的代码产生以下输出:
对于一些特殊符号,如*、@、.等,需要在其两边加上句点.作为修饰
上面的代码产生以下输出:
9.字符串大小写转换
使用TRANSLATE关键字进行字符串大小写转换操作
语法格式
* 大写
TRANSLATE <c> TO UPPER CASE.
* 小写
TRANSLATE <c> TO LOWER CASE.
上面的代码产生以下输出:
上面的代码产生以下输出:
10.字符串移位
语法格式1
SHIFT <c> [BY <n> PLACES] [<modes>].
表示将字符串整体进行位移
<modes>取值有以下3种类型:
① 空白(缺省),字符串往左移一位
② LEFT,字符串往左移n位
③ RIGHT,字符串往右移n位
上面的代码产生以下输出:
上面的代码产生以下输出:
语法格式2
SHIFT c UP TO c1.
表示指定字符串c从子串c1进行位移,执行结果返回系统参数SY-SUBRC,执行成功返回0,不匹配则返回4
上面的代码产生以下输出:
语法格式3
* 移除字符串c左边的子字符串c1
SHIFT c LEFT DELETING LEADING c1.
* 移除字符串c右边的子字符串c1
SHIFT c RIGHT DELETING TRAILING c1.
执行结果返回系统参数SY-SUBRC,执行成功返回0,不匹配则返回4
上面的代码产生以下输出:
上面的代码产生以下输出:
11.字符串清空
上面的代码产生以下输出: