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