SAP_ABAP_工具_字符串处理

自从ABAP 7.40, SP08版本以来,ABAP引入了许多新的字符串操作语法,使得字符串处理更加简洁和高效。以下是一些新的字符串处理语法的总结:

1. 内联声明和字符串模板

内联声明的字符串操作

新的内联声明让代码更加紧凑和易读。

DATA(lv_string) = |Hello, { sy-uname }!|. 
WRITE: / lv_string.

在这个例子中,lv_string 将会包含 Hello, <当前用户>!

2. 字符串截取

这个例子中,lv_substring 将包含字符串 ABAP,因为它从第8个字符开始截取长度为4的子串。

DATA(lv_string) = 'Hello, ABAP!'.
DATA(lv_substring) = lv_string+7(4).
WRITE: / lv_substring.

3. 字符串长度

可以在操作中直接声明数据对象。

DATA(lv_string) = 'ABCDE'. 
DATA(lv_length) = strlen( lv_string ).

WRITE: / lv_length.

4. COND 表达式

使用 COND 表达式来进行条件判断和赋值。

DATA(lv_age) = 18. 
DATA(lv_status) = COND string( WHEN lv_age >= 18 THEN 'Adult' ELSE 'Minor' ). 
WRITE: / lv_status.

5. SWITCH 表达式

SWITCH 表达式根据条件返回不同的值。

DATA(lv_grade) = 'A'. 
DATA(lv_feedback) = SWITCH string( lv_grade WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Good' WHEN 'C' THEN 'Average' ELSE 'Needs Improvement' ). 
WRITE: / lv_feedback.

6. REDUCE 表达式

REDUCE 表达式用于对内表进行聚合操作。

DATA(lt_numbers) = VALUE int_table( ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ) ). 
DATA(lv_sum) = REDUCE int( INIT sum = 0 FOR <number> IN lt_numbers NEXT sum = sum + <number> ). 
WRITE: / lv_sum.

7. FILTER 表达式

FILTER 表达式用于从内表中过滤出满足条件的行。

DATA(lt_numbers) = VALUE int_table( ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ) ). 
DATA(lt_even) = FILTER int_table( lt_numbers WHERE table_line MOD 2 = 0 ). 
LOOP AT lt_even INTO DATA(lv_number). 
  WRITE: / lv_number. 
ENDLOOP.

8. 字符串替换

使用内联函数REPLACE

使用REPLACE函数可以替换字符串中的子字符串。

DATA(lv_string) = 'Hello, ABAP!'.
REPLACE ALL OCCURRENCES OF 'ABAP' IN lv_string WITH 'SAP'.
WRITE: / lv_string.

9. 检查字符串是否包含子字符串

使用内联函数FIND

使用FIND函数可以检查字符串中是否包含某个子字符串。

DATA(lv_string) = 'Hello, ABAP!'.
IF contains( val = lv_string sub = 'ABAP' ).
  WRITE: / 'String contains ABAP'.
ELSE.
  WRITE: / 'String does not contain ABAP'.
ENDIF.

9. 去除空格

使用内联函数CONDENSE

使用CONDENSE函数可以去除字符串中的多余空格。

DATA(lv_string) = '   Hello,    ABAP!   '.
CONDENSE lv_string.
WRITE: / lv_string.

10. 字符串大小写转换

使用内联函数TO_LOWERTO_UPPER

使用TO_LOWERTO_UPPER函数可以将字符串转换为小写或大写。

DATA(lv_string) = 'Hello, ABAP!'.

DATA(lv_lower) = to_lower( lv_string ).
WRITE: / lv_lower.

DATA(lv_upper) = to_upper( lv_string ).
WRITE: / lv_upper.
11. SHIFT 左移字符串 
DATA(lv_string) = 'Hello, ABAP!'.

SHIFT lv_string BY 2 PLACES LEFT.
WRITE: / lv_string.

12. SHIFT 右移字符串

DATA(lv_string) = 'Hello, ABAP!'.

SHIFT lv_string BY 3 PLACES RIGHT.
WRITE: / lv_string.

13. 去除字符串前导空格

DATA(lv_string) = '   Hello, ABAP!  '.

SHIFT lv_string LEFT DELETING LEADING SPACE.
WRITE: / lv_string.

14. 去除字符串尾部空格

DATA(lv_string) = '   Hello, ABAP!  '.

SHIFT lv_string RIGHT DELETING TRAILING SPACE.
WRITE: / lv_string.
15. 去除前导零
DATA: D1 TYPE N LENGTH 10 VALUE '1'.
DATA(D2) = |{ D1 ALPHA = OUT }|.
WRITE:D2.
16. 添加前导零
DATA: D1 TYPE C LENGTH 10 VALUE '1'.
DATA(D2) = |{ D1 ALPHA = IN }|.
WRITE:D2.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值