当然,问题被讨论了数千次(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掩码)并且掩码不支持regexp或通配符。或者我错了?
由于某种原因,这个变种对我不起作用
SHIFT string RIGHT BY 1.
也许有人知道更好的语法在一行中做到这一点? ABAP 7.40或7.50中有什么新东西?
答案 0 :(得分:7)
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等)
答案 1 :(得分:-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.