欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

SAP-ABAP-去除空格和数字校验

在 ABAP 里,去除字符串中的空格可以根据不同的需求(如去除前导空格、尾随空格、所有空格)使用不同的函数或方法。以下为你详细介绍几种常见的去除空格的方式。

1. 去除前导空格

使用 CONDENSE 语句结合 NO-GAPS 选项可以去除字符串的前导空格。示例代码如下:
REPORT z_remove_leading_spaces.

DATA: lv_string TYPE string VALUE '   Hello World'.

CONDENSE lv_string NO-GAPS.

WRITE: / '去除前导空格后的字符串:', lv_string.

2. 去除尾随空格

同样可以使用 CONDENSE 语句,不过这次结合 TRAILING 选项来去除字符串的尾随空格。示例代码如下:
REPORT z_remove_trailing_spaces.

DATA: lv_string TYPE string VALUE 'Hello World   '.

CONDENSE lv_string TRAILING.

WRITE: / '去除尾随空格后的字符串:', lv_string.

3. 去除所有空格

可以使用 REPLACE 函数将字符串中的所有空格替换为空字符串,从而达到去除所有空格的目的。示例代码如下:
REPORT z_remove_all_spaces.

DATA: lv_string TYPE string VALUE ' Hello  World '.

REPLACE ALL OCCURRENCES OF ' ' IN lv_string WITH ''.

WRITE: / '去除所有空格后的字符串:', lv_string.

4. 使用正则表达式去除所有空格

如果需要更复杂的匹配和替换操作,可以使用正则表达式。ABAP 从 7.02/7.20 版本开始支持正则表达式相关的函数模块。

代码解释

  • 定义要处理的字符串 lv_string、正则表达式模式 lv_pattern\s 表示匹配任何空白字符)和用于存储结果的变量 lv_result
  • 调用 REGER_REPLACE 函数模块,将字符串中匹配正则表达式的部分替换为空字符串。
  • 输出使用正则表达式去除所有空格后的字符串。
示例代码如下:
 
REPORT z_remove_all_spaces_regex.

DATA: lv_string TYPE string VALUE ' Hello  World ',
      lv_pattern TYPE string VALUE '\s',
      lv_result TYPE string.

CALL FUNCTION 'REGER_REPLACE'
  EXPORTING
    text    = lv_string
    pattern = lv_pattern
    replacement = ''
  IMPORTING
    result  = lv_result.

WRITE: / '使用正则表达式去除所有空格后的字符串:', lv_result.

5. 使用正则表达式校验小数

代码如下
IF CL_ABAP_MATCHER=>MATCHES(  PATTERN = '^(-?[1-9]\d*(\.\d*[1-9])?)|(-?0\.\d*[1-9])$'
                                       TEXT = LS_DATA-ZGLDW ) = ABAP_TRUE.
WRITE:/'是数字'ELSE.
        LS_DATA-ZGLDW = 0.
WRITE:/'不是数字'ENDIF.

 

posted @ 2025-04-28 15:54  萧静默  阅读(677)  评论(0)    收藏  举报