在网上面虽然有许多在线编辑器,但我一般用不上那么多功能.想了很久,决定自己写一个简单的在线编辑器,支持几种简单的文字处理就行了,所以,很久以前就写了一个,但在UBB转换这一块是用的别人的代码,谁写的我忘了,可是别人的代码使用的时候会用很多问题,如[b][b]aaa[/b][/b]就不能很好的实现,结果就成了<b>[b]aaa</b>[/b],很是让我头疼,不得不提醒使用的人,千万不要出现[b][b]aaa[/b][/b]这种情况。不过现在好多了,研究了许久,原来别人是为了提高速度。下面看看两种的区别。
别人的:r是Regex对象,m是Match对象。for(m=r.match(); m.success; m=m.nextMatch()){......}问题就出在m=m.nextMatch(),它是从上一个匹配之后寻找下一个匹配。为了避免这种情况出现,我把它改下了一下,
//处理[b][/b]
r = new Regex(@"/[b]([/S/s]*?)/[/b]");
m = r.Match(str);
while(m.Success)
{
str = str.Replace(m.Groups[0].ToString(),"<b>"+m.Groups[1]+"</b>");
m = r.Match(str);
}
这样就可以解决[b][b]aaa[/b][/b]的问题了,不过效率上会有点区别,稍微差一点,但访问量小的时候,没什么感觉的。呵呵。。。。。。
<script language='javascript' src='http://www.shiqiaotou.com/donetk/Footer.js'></script>