大佬请绕行~~~~~
今天有人问我,字符串怎么右截取?
为什么要右截取?
因为我也不知道我这个字段取出来的值是几个字符。如果是数字就还好,我直接让前导零满位,再从左边某位开始截取,可是如果是字母开头,前导零还是不能满位啊?
首先摆个图:
比如 一组数据 0001234,00A123,000005643,我只想要1234,和A123,5643,不确定左边有几个0怎么办,如果使用右截取是从右向左开始
SHIFT ‘0001234’ BY 1 PLACES RIGHT 表示从右边第一位开始截取。得到000123.。。
其实我们可以这样想:
比如我要从右边截取4位。这个字段是mseg-WEMPF 是CAHR12。
先计算出这个字段的长度lv_len,
然后减去4,等于要从第几位开始截取lv_cut_begin。
然后按照左截取的方式去截取就好了
eg: +8(4)从第八位开始截取四位
TYPES: BEGIN OF ty_wempf,
wempf TYPE wempf,
END OF ty_wempf.
DATA:ls_wempf TYPE ty_wempf.
DATA:ls_wempf2 TYPE ty_wempf.
DATA:lt_wempf TYPE TABLE OF ty_wempf.
DATA:lt_wempf2 TYPE TABLE OF ty_wempf.
DATA lv_cut_begin TYPE i.
DATA lv_len TYPE i.
ls_wempf-wempf = '0510000000'.
APPEND ls_wempf TO lt_wempf.
ls_wempf-wempf = 'A0503'.
APPEND ls_wempf TO lt_wempf.
ls_wempf-wempf = 'eric0001'.
APPEND ls_wempf TO lt_wempf.
ls_wempf-wempf = 'CAM-CAOJ'.
APPEND ls_wempf TO lt_wempf.
ls_wempf-wempf = '000400000025'.
APPEND ls_wempf TO lt_wempf.
LOOP AT lt_wempf INTO ls_wempf.
lv_len = strlen( ls_wempf-wempf ).
lv_cut_begin = lv_len - 4.
ls_wempf2-wempf = ls_wempf-wempf+lv_cut_begin(4).
APPEND ls_wempf2 to lt_wempf2.
clear:ls_wempf2,ls_wempf,lv_len,lv_cut_begin.
ENDLOOP.
你也这样吗?
还有什么好办法?一起分享