Проверьте, содержит ли строка изолированное слово - PullRequest
2 голосов
/ 09 марта 2020

Когда я ищу слово в строке, я обычно делаю это примерно так:

CONSTANTS:
      lc_word TYPE string VALUE 'TEST',
      .

IF ls_structure-name CS lc_word.
      "count( ).
ENDIF.

Но на этот раз я хочу, чтобы оно было правдой, только если слово изолировано и чувствительно к регистру .
Например:

  • TESTer, Test не должно учитываться
  • TEST, lol TEST, TEST yourself, hi TEST yourself должно учитываться

У кого-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

3 голосов
/ 09 марта 2020

Вы можете использовать проверку регулярных выражений:

FIND REGEX '(\s|^)TEST(\s|$)' IN ls_structure-name.

IF sy-subrc EQ 0.
      "count( ).
ENDIF.

Проверяет следующий шаблон:

  • Пробел или начало строки
  • 'test '
  • Пробел или конец строки
0 голосов
/ 09 марта 2020

Вы можете разбить свое предложение на таблицу, а затем проверить, существует ли оно в сказке. Как это:

DATA: lv_string TYPE string VALUE 'One two TEST three',
      lv_var    TYPE string VALUE 'TEST',
      lv_count  TYPE i.


SPLIT lv_string AT space INTO TABLE DATA(lt_string).
IF line_exists( lt_string[ table_line = lv_var ] ).
  lv_count = lv_count + 1.
ENDIF.
WRITE: / lv_count.
...