网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.AspectJ 和模仿对象的测试灵活性.
.[JAVA100例]069、使用SAX解析XML.
.Java中的Socket编程.
.[个人原创]JAVA 开发工具Jcreato.
.在移动设备上用J2ME实现动画.
.EJB设计模式(1).
.Java Learning Path(四) 方法篇.
.Eclipse In Action1.1.
.J2ME编程最佳实践之联网开发.
.Java程序中用JFreeChart制作图形.
.Java的模板引擎Velocity初体验.
.Mysql的子类,专门验证登录 Pas.
.J2EE核心:iBatis DAO入门与.
.Java性能探寻.
.Sun 发布 JAXP 1.
.百分之百纯 Java(TM) java名词 解.
.从简单程序看java运行错误.
.有选择地显示预加载内容 提高网站.
.Java技术的新方向.
.熟练掌握JDK1.5枚举类型.

用JAVA实现UBB代码

发表日期:2008-1-5



  背景资料
Java与javascript程序设计

    一、什么是UBB
  
  UBB代码是Html的一个变种,是Ultimate Bulletin Board (国外一个BBS程序,国内也有不少地方使用这个程序)采用的一种非凡Tag。UBB代码很简单,功能很少,但是其Tag语法检查实现非常轻易,所以在很多论坛中都得到了应用。
  
  UBB代码一般是以这样的格式出现,“这是粗体”,表示一段粗体文字,其它常用的还有“www.code-maker.com”、“sonymusic china.com”,分别表示一个超链接和一个E-mail地址的链接。具体的例子,请参考ChinaASP论坛(http://www.chinaasp.com/sqlbbs/)。
  
  二、用JAVA实现UBB代码
  
  相信大家一定可以想到UBB代码的解析,其实就是将“[b][/b]”这样的格式转换成““”就可以了,但是怎么转换呢?答案是用正则表达式。利用上一期讲到的正则表达式类(sony.utils.Regex)中的eregi_replace替换方法,可以很轻松地做到。下面是一段示例。
  String s="这是粗体";
  String result;
  result = Regex.eregi_replace("\[b\](.+?)\[\/b\]","“$1“", s);
  System.out.println(result);
  //打印结果是:
  //“这是粗体“。
这么简单吗?是的,我们只需要将其它的UBB Tag作类似的替换就实现了UBB代码的解析了。
三、sony.utils.filter.Ubb类的源码
  在这个类中,只存在一个parse方法,而且非常短小,因为我将所有的UBB Tag和对应的Html Tag放到了一个二维数组中了,在parse方法中所做的,只是遍历这个数组,做正则表达式的替换就可以了。这样在需要扩充UBB代码集时也会方便一些。
  因为UBB代码是不分大小写的,所以这里使用了eregi_replace方法。

  四、一个测试UBB代码的JAVA例子
源程序:
public static void main(java.lang.String[] args)
{
String ubbSource=
"[url href=www.china.com]www.china.com[/url] 斜体 china.com再来一段粗体boss_ch china.com[hr][#ff0000]红色[/#]";
if (args.length > 0)
ubbSource= args[0];
System.out.println("输入的UBB 源代码:" + ubbSource);
System.out.println("转换后的Html 代码:" + parse(ubbSource));
}

  五、UBB类在jsp程序中的使用
  
  UBB通常是应用在网站中的,那么在JSP(一种建设网站的脚本语言,基于JAVA,在国外应用非常广泛,国内也有很多人在使用,见http://www.chinaasp.com/sqlbbs/ 中的JSP/EJB版面)中如何使用呢?其实JSP完全采用Java的语法,所以在看了下面的例子后,大家会发现和上一个例子中的使用方法几乎一样。
  
  当然,在使用之前,需要将编译过的Ubb.class文件放到你的Web Server的WEB-INF/class/sony/utils/filter/目录下。
  并且这里使用了另一个类sony.utils.filter.HtmlFilter

  六、结论
因为正则表达式的功能如此强大,以至于这个实现UBB代码的类只需要60行左右的代码,而且因为使用了数组来保存需要替换的UBB Tag和Html Tag,所以扩充起来非常方便,只需要在数组中增加几行就行了,主函数不需改动。
上一篇:用Java实现Web服务器 HTTP协议 人气:908
下一篇:用Java实现股票走势图 人气:1724
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐