|
4#
楼主 |
发表于 2013-1-27 12:52:34
|
只看该作者
本帖最后由 todaynew 于 2013-1-27 12:54 编辑
zhuyiwen 发表于 2013-1-27 10:49
这个东西用正则表达式实现只怕不容易,我想原因出现在循环上,也许能够实现,平常只做过简单的替换,呵呵
...
朱老师:
问题是这样的:有如下的一些表示公式的字符串:
“round(sum(v(1,2):v(2,4)/5,2)”
"iif(sum(v(2,2):v(4,4))=0,0,1/sum(v(2,2):v(4,4)))"
这类字符串中包含了形如:sum(v(数字1,数字2):v(数字3,数字4))的子字符串。要将这个子字符串替换成加和关系的子字符串。
解决的思路是:
1、判断是否存在sum(v(数字1,数字2):v(数字3,数字4))子字符串;
2、存在的情况下,判断存在几个sum(v(数字1,数字2):v(数字3,数字4))子字符串,即得到循环替换的count值;
3、做循环逐一获取sum(v(数字1,数字2):v(数字3,数字4))子字符串,以及sum(v(数字1,数字2):v(数字3,数字4))子字符串所在位置的左环视子字符串和右环视子字符串;
4、对sum(v(数字1,数字2):v(数字3,数字4))再通过正则表达式分别得到:数字1~数字4(这一步不用正则表达式处理也问题不大,可以通过字符串函数来处理)
5、通过数字1~数字4做两层循环得到要替换的字符串。
6、将得到的替换的子字符串与左环视字符串、右环视字符串拼接为需要的字符串。
我现在遇到的主要问题在于取出sum(v(数字1,数字2):v(数字3,数字4))子字符串和它所在位置的左、右环视子字符串,是否能就此问题给点提示。如果能写一个完整的函数最好。谢谢。
|
|