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