解析带运算符字符串的一个小算法
2014-01-22 09:21
302 查看
有时候会有些类似的字符串:A10010001-A10020001+A10020002+A41030001+A43990001
需要解析为
+ A10010001
- A10020001
+
A10020002
+
A41030001
+
A43990001
可以参考以下算法:
FORM zform_get_kemu_r TABLES t_right_kemu_list STRUCTURE str_right_kemu_list
USING u_str_hkonts .
DATA:
BEGIN OF zstr_kume_sign,
bjh_hkont TYPE zbjh_hkont,
zoperator TYPE zoperator,
END OF zstr_kume_sign.
DATA:
l_tmp TYPE string,
l_move TYPE int4.
DATA:
lt_kemu LIKE TABLE OF zstr_kume_sign WITH HEADER LINE.
DATA:
l_wa_kemu_list LIKE str_right_kemu_list.
l_tmp = u_str_hkonts.
"临时保存
REPLACE ALL OCCURRENCES OF '+' IN u_str_hkonts WITH '$'."替换掉加减法符号
REPLACE ALL OCCURRENCES OF '-' IN u_str_hkonts WITH '$'.
WHILE u_str_hkonts IS NOT INITIAL.
FIND '$' IN u_str_hkonts
MATCH OFFSET l_move.
"获取科目
IF sy-subrc <> 0.
"如果只有一项,没有其他的项目加减
lt_kemu-bjh_hkont = u_str_hkonts.
ELSE.
lt_kemu-bjh_hkont = u_str_hkonts+0(l_move).
"如果有多项,
ENDIF.
"第一个是正
IF sy-index = 1.
lt_kemu-zoperator = '+'.
APPEND lt_kemu.
ENDIF.
"第一个之后
IF sy-index > 1 AND u_str_hkonts IS NOT INITIAL.
lt_kemu-zoperator = l_tmp(1).
"获取符号
APPEND lt_kemu.
SHIFT:
l_tmp
需要解析为
+ A10010001
- A10020001
+
A10020002
+
A41030001
+
A43990001
可以参考以下算法:
FORM zform_get_kemu_r TABLES t_right_kemu_list STRUCTURE str_right_kemu_list
USING u_str_hkonts .
DATA:
BEGIN OF zstr_kume_sign,
bjh_hkont TYPE zbjh_hkont,
zoperator TYPE zoperator,
END OF zstr_kume_sign.
DATA:
l_tmp TYPE string,
l_move TYPE int4.
DATA:
lt_kemu LIKE TABLE OF zstr_kume_sign WITH HEADER LINE.
DATA:
l_wa_kemu_list LIKE str_right_kemu_list.
l_tmp = u_str_hkonts.
"临时保存
REPLACE ALL OCCURRENCES OF '+' IN u_str_hkonts WITH '$'."替换掉加减法符号
REPLACE ALL OCCURRENCES OF '-' IN u_str_hkonts WITH '$'.
WHILE u_str_hkonts IS NOT INITIAL.
FIND '$' IN u_str_hkonts
MATCH OFFSET l_move.
"获取科目
IF sy-subrc <> 0.
"如果只有一项,没有其他的项目加减
lt_kemu-bjh_hkont = u_str_hkonts.
ELSE.
lt_kemu-bjh_hkont = u_str_hkonts+0(l_move).
"如果有多项,
ENDIF.
"第一个是正
IF sy-index = 1.
lt_kemu-zoperator = '+'.
APPEND lt_kemu.
ENDIF.
"第一个之后
IF sy-index > 1 AND u_str_hkonts IS NOT INITIAL.
lt_kemu-zoperator = l_tmp(1).
"获取符号
APPEND lt_kemu.
SHIFT:
l_tmp
相关文章推荐
- 解析带运算符字符串的一个小算法
- 一个可以解析复杂JSON字符串里面值的算法
- 算法题——不创建临时变量求一个字符串的长度
- eval解析JSON字符串的一个小问题
- 一个消除重复排列的所有输入字符串的排列算法
- 设计算法来统计一个输入字符串中所包含的整数个数,并输出这些数
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
- 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的
- 【小米笔试题】实现一个算法,确定一个字符串的所有字符是否全部不同
- 在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法
- 1.1 设计算法判断一个字符串中字符都是否唯一的。如果不能使用额外的数据结构呢?
- 算法:判断一个字符串是否包含另一个字符串
- 【Java,面试】实现一个算法,确定一个字符串的所有字符是否全都不同
- Python:解析,如何反转一个字符串
- 实现一个比较高级的字符匹配算法,即一串很长的字符,要求找到符合要求字符的字符串
- 解析嵌套json字符串,一个json字符串中嵌套另一个json字符串
- 设计一个算法将两个字符串合并按字母排序
- 实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3这些都要找出来
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 一道有趣的算法题:仿照Excel的列编号,给定一个数字,输出该列编号字符串