web-dev-qa-db-ja.com

文字列から最後の文字を削除/抽出します

もちろん、質問は何千回も議論されました( 12 、)が、この醜いスニペット以外は何も提供されませんでした:

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の新機能はありますか?

3
Suncatcher

文字列の最後の文字を取得する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など)。

6
JozsefSzikszai

私が過去に使ったトリック:

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.
0
Marius