日期:2014-05-18  浏览次数:20524 次

字符串解析实例
我是用来解析网页模板的。就是吧网页模板放到数据库里,然后里面有写关键字是要用数据库里的数据替换的 比如:“{webTitle}”替换成网站名称。现在网页中有很多这样的要替换的,如何快速替换?另外,如果有嵌套的就更麻烦了,比如:
现在有一个变量a,函数prc,在模板里,吧a做为prcLoop的参数,{prcLoop({a})}
这样如何来解析呢?也就是嵌套了的怎么处理啊?
正则表达式好像也不好处理呢。希望各位大哥帮忙啊。分不够可以继续加啊!

------解决方案--------------------
先替换内层,再替换外层

正则肯定好使,只是写规则麻烦些
------解决方案--------------------
不建议用嵌套,实际使用当中碰到嵌套的也有 不过不多 可以用其他方式代替 

比如 {prcLoop([a])} 
用中括号 目的是为了方便外层的匹配。
处理[a]也比较轻松

------解决方案--------------------
Replace()直接替换不行?
------解决方案--------------------
比如:“{webTitle}”替换成网站名称

是所有的{webTitle}都替换成相同的网站名称吗? 即 "{webTitle}"->"新浪" ?
如果是我不明白直接replace替换有什么问题?
------解决方案--------------------
prcLoop是什么东西?
------解决方案--------------------
探讨
先替换内层,再替换外层


------解决方案--------------------
replace需要来回多次扫描整串。

应该有一次扫描就全部替换的算法。不过自己也是用的replace,简单。反正现在电脑速度也够快的,处理字串,小菜一碟。
------解决方案--------------------
过于复杂的方法都不是好方法。

你的方案都可以开发一个编译器了。
------解决方案--------------------
在网站实际开发中 我碰到过嵌套的 比如栏目的文章循环(既要循环栏目 也要循环栏目的文章)
栏目和子栏目的列表 比如阿里巴巴的栏目 就得用循环比较好。

这样有个解决方案 就是
把被嵌套的标签用 一个 特殊 标签代替 比如 [custom:文章列表]
文章列表的具体内容 当然也是{...}之类,可以放在数据库里。美其名曰: 自定义标签

 自己囧一下
------解决方案--------------------
一般这样的问题就把问题独立出来;
你先把自己能够解决的问题解决掉,然后把不能解决的一类问题抽象成一个类,然后在这个类里面进行处理;
比如你的例子:
你先匹配所有不嵌套的进行替换,对嵌套的提取出来进行解析,最后组合到你的字符串里面去;
1、对嵌套的进行提取用特殊字符替换;
2、对所有的不嵌套的进行替换操作;
3、对提取出来的进行解析;
4、对提取出来的放回原来的字符串;

这样的效率不会太差吧。