:::: МЕНЮ ::::

Операторы для сравнения строк

Оператор Значение
CO Contains Only: Истина, если операнд1 содержит только символы из операнда2. Оператор регистрозависимый. Операнды чувствительны к ведущим/последним пробелам. Если операнд2 типа string и initial, то результатом логического выражения будет ложь, за исключением тех случаев, когда операнд1 тоже типа string и initial. В таком случае результатом логического выражения всегда будет истина. Если логическое выражение ложь, то sy-fdpos будет содержать смещение первого символа в операнде1, которого нет в операнде2. Иначе, sy-fdpos будет содержать длину операнда1.
CA Contains Any: Истина, Если операнд1 содержит хотя бы один символ из операнда2. Оператор регистрозависимый. Операнды чувствительны к ведущим/последним пробелам. Если операнд1 или операнд2 типа string и initial, то результатом логического выражения всегда будет ложь. Если результат сравнения положительный, то sy-fdpos будет содержать смещение первого символа в операнде1, который содержит операнд2. Иначе, sy-fdpos будет содержать длину операнда1.
CS Contains String: Истина, если содержимое операнда2 содержится в операнде1. Оператор регистронезависимый. Операнды чувствительны к ведущим пробелам. Если операнд1 типа string и initial, или типа C и содержит только пробельные символы, результатом логического выражения будет ложь, за исключением когда операнд2 также типа string и initial, или типа C и содержит только пробельные символы. В этом случае результатом логического выражения будет истина. Если выражение истина, то sy-fdpos будет содержать смещение операнда2 в операнде1. Если результатом сравнения будет ложь, то sy-fdpos будет содержать длину операнда1.
CP Covers Pattern: Истина, если содержимое операнда2 удовлетворяет шаблону операнда1. Операнд2 может содержать шаблонные символы: «*» — любая строка и «+» — любой символ. Оператор не чувствителен к регистру. Операнды чувствительны к ведущим пробелам. Если результат сравнения положительный, то sy-fdpos будет содержать смещение операнда2. Иначе, sy-fdpos будет содержать длину операнда1. Для поиска шаблонных символов их необходимо экранировать путем добавления в операнд2 символа «#» перед требуемым символом. Экранированные символы в операнде2 чувствительны к регистру.
CN Contains Not Only: Эквивалент операнд1 NOT CO операнд2.
NA Contains Not Any: Эквивалент операнд1 NOT CA операнд2.
NS Contains No String: Эквивалент операнд1 NOT CS операнд2.
NP No Pattern: Эквивалент операнд1 NOT CP операнд2.


Примечание

  • Операторы CP и NP интерпретируют несколько подряд идущих символов «*» как один символ «*». Символ «+» не находит пробелы.
  • Операнды бинарных типов интерпретируются как строка с юникодами.
  • Операторы сравнения могут быть заменены предикатными функциями.
  • Оператор CS может работать медленнее чем оператор FIND или функция find.

Применение CO

Оператор CO обычно применяют в случаях, когда нужно проверить есть ли в строке недопустимые символы. При использовании символьных литералов следует помнить что переменная может содержать пробелы на конце. Пример ниже демонстрирует проверку, является ли строка числом.

Результат работы программы
Оператор CO в ABAP

Применение CA

Пример ниже демонстрирует проверку наличия цифры в строке

Результат работы программы
Оператор CA в ABAP

Применение CS

Оператор CS применяется для поиска подстроки

Результат работы программы
Оператор CS в ABAP

Оператор CP

Оператор шаблонного поиска CP проверяет, соответствует ли строка определенному шаблону

Результат работы программы
Оператор CP в ABAP

Описание работы операторов взято из справки SAP.


2 комментария

Присоединиться к обсуждению...