从字符串

时间:2018-03-21 11:24:21

标签: string sap abap

当然,问题被讨论了数千次(123)但除了这个丑陋的片段外没有提供任何内容:

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中有什么新东西?

2 个答案:

答案 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.