Delete/extract 字符串的最后一个字符

Delete/extract last character from the string

当然,问题被讨论了一千次 (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 ).

在您的 ABAP 编辑器中输入 SUBSTRING 并按 F1 键,还有一些变体(substring_after、substring_before 等)

我过去用过的一个技巧:

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.