检查字符串是否包含孤立的单词
Check if string contains an isolated word
当我在字符串中搜索单词时,我通常会这样做:
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
应该算
有人知道怎么做吗?
你可以把你的句子拆分成table,然后检查它是否存在于故事中。像这样:
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.
您可以使用正则表达式检查:
FIND REGEX '(\s|^)TEST(\s|$)' IN ls_structure-name.
IF sy-subrc EQ 0.
"count( ).
ENDIF.
它检查以下模式:
- 空格或字符串的开头
- 'test'
- 空格或字符串结尾
当我在字符串中搜索单词时,我通常会这样做:
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
应该算
有人知道怎么做吗?
你可以把你的句子拆分成table,然后检查它是否存在于故事中。像这样:
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.
您可以使用正则表达式检查:
FIND REGEX '(\s|^)TEST(\s|$)' IN ls_structure-name.
IF sy-subrc EQ 0.
"count( ).
ENDIF.
它检查以下模式:
- 空格或字符串的开头
- 'test'
- 空格或字符串结尾