К сожалению, оператор SPLIT
в ABAP не допускает регулярное выражение в качестве выражения-разделителя.Поэтому мы должны использовать прогрессивное сопоставление, что немного неудобно в ABAP:
report zz_test_split_capital.
parameters: p_input type string default 'NameAgeAddress' lower case.
data: output type stringtab,
off type i,
moff type i,
mlen type i.
while off < strlen( p_input ).
find regex '[A-Z][^A-Z]*'
in section offset off of p_input
match offset moff match length mlen.
if sy-subrc eq 0.
append substring( val = p_input off = moff len = mlen ) to output.
off = moff + mlen.
else.
exit.
endif.
endwhile.
cl_demo_output=>display_data( output ).
Просто для сравнения, следующий оператор будет работать в Perl:
my $input = "NameAgeAddress";
my @output = split /(?=[A-Z])/, $input;
# gives @output = ('Name','Age','Address')