目录
场景1:是否只包含数字
方式一 CO 关键字
str1 CO '0123456789'
涉及关键字:CO,使用公式 str1 CO str2 。表示 str1 中 的每个字符 在 str2 中都能找到
方式二 contains 函数+正则表达式
REPORT ZREGEX.
PARAMETERS field TYPE CHAR10.
IF contains( val = field regex = '(\d)+$').
WRITE / '匹配成功'.
ELSE.
WRITE / '匹配失败'.
ENDIF.
*输入 1111 输出 匹配成功
*输入 111d 输出 匹配失败
场景2:字符串1 是否 包含 字符串2
DATA str1 TYPE STRING VALUE 'hello world'.
DATA str2 TYPE STRING VALUE 'hell'.
IF str1 CS str2.
WRITE:/ 'str1 中 包含字符串str2'
涉及关键字:CS, 公式 str1 ca str2 ,表示 str1 是否包含str2。
类比:与JavaScript中 String对象的includes方法类似。查找字符串中是否包含指定的子字符串。
场景3:截取部分字符串
例如:yyyyMMdd格式的日期字符串 截取年份
方式一 :字符串+数字(数字):
其中第一个数字表示起始位置,括号中的数字表示截取的长度。例如:+0(4)就表示截取从第一个字符开始往右4个字符
REPORT ZABAP_STRING.
DATA(lv_datum) = '20230202'.
WRITE: / lv_datum+0(4).
输出如下:
OVERLAY:参考字符串对空白字符进行填充。
使用场景:模糊查询时替换字符串中内的空格
使用公式: OVERLAY c1 WITH c2.
该函数对原字符串及参考字符串按字符逐一比较,若原字符串某位置字符值为空而参考字符串有值存在,则用参考字符串字符值进行取代。
REPORT ZABAP_STRING.
DATA: lv_search TYPE String VALUE 'hello world',
lv_palceholder TYPE String.
DATA lv_length TYPE I.
lv_length = strlen( lv_search ).
do lv_length times.
CONCATENATE '%' lv_palceholder INTO lv_palceholder.
enddo.
WRITE: / lv_palceholder.
OVERLAY lv_search WITH lv_palceholder.
WRITE: / lv_search.
输出:
获取字符串长度
使用函数 strlen 注意该函数括号内要空格
DATA: lv_search TYPE String VALUE 'hello world'.
DATA lv_length TYPE I.
lv_length = strlen( lv_search ).
字符串拼接
方式一:使用 CANCATENATE 关键字
CANCATENATE a b INTO result.
其中 a b 是变量或者字符串 result 是目标变量
注意事项使用CONCATENATE拼接字符串时默认会去除结尾的空字符,若需保留空字符则需要在结尾使用RESPECTING BLANKS关键字声明
示例:
DATA:l_matnr TYPE C VALUE '123456789 ' LENGTH 18,
l_werks TYPE C VALUE '8800' LENGTH 4,
l_result(22) TYPE c.
CONCATENATE l_matnr l_werks INTO l_result RESPECTING BLANKS.
WRITE: / l_result.
CONCATENATE l_matnr l_werks INTO l_result.
WRITE: / l_result.
运行结果:
方式二:使用 `
其中 ` ` 表示字符串 && 表示拼接变量
DATA(str) = `index_` && sy-index.
数字转换成字符串
方式一:声明 C 类型变量并赋值给 该变量
DATA str TYPE C .
C = sy-index.
方式二:使用 `
使用`` && + 变量模式
DATA(strss) = `` && sy-index.
字符串大小写转换
使用 TRANSLATE 关键字
公式:
大写:TRANSLATE lv_string TO UPPER CASE
小写:TRANSLATE lv_string TO LOWER CASE
例子:
WRITE: / '字母大小写转换--start'.
DATA: lv_string TYPE string VALUE 'hello world'.
WRITE: / '转换前:',lv_string.
TRANSLATE lv_string TO UPPER CASE.
WRITE: / '转换后:',lv_string.
WRITE: / '字母大小写转换--end'.
输出结果如下: