Удалить/извлечь последний символ из строки

Вопрос:

Конечно, вопрос обсуждался тысячи раз (1, 2, 3), но ничего не предлагалось, кроме этого уродливого фрагмента:

data: str type string value 'abcd#',
len type i.

len = strlen( str ).
len = len - 1.
str = str+0(len).

Есть ли какой-нибудь элегантный лайнер для этого? Единственный вид, который я нашел до сих пор, – это

SHIFT str RIGHT DELETING TRAILING ','.

Однако для этого требуется, чтобы вы знали, что последний символ (маска TRAILING) и маска не поддерживают регулярные выражения или подстановочные знаки. Или я ошибаюсь?

Этот вариант для меня не работает по какой-то причине

SHIFT string RIGHT BY 1.

Может быть, кто-то знает более красивый синтаксис, чтобы сделать это в одной строке? Что нового в ABAP 7.40 или 7.50?

Лучший ответ:

SUBSTRING, чтобы получить последний символ строки:

DATA: str TYPE string VALUE 'abcd#'.
str = substring( val = str off = strlen( str ) - 1 len = 1 ).

str будет ‘#’

Чтобы удалить последний символ строки (например, в вашем примере):

str = substring( val = str off = 0 len = strlen( str ) - 1 ).

Введите SUBSTRING в своем редакторе ABAP и нажмите F1 на нем, есть еще несколько вариантов (substring_after, substring_before и т.д.).

Ответ №1

Трюк, который я использовал в прошлом:

DATA l_str TYPE string VALUE 'abcd#'.

SHIFT l_str RIGHT by 1 PLACES CIRCULAR. " move last char to start, read it from l_str(1)
l_str = l_str+1. " remove it.

Оцените статью
TechArks.Ru
Добавить комментарий