网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  用java实现ubb代码     
  文章作者:未知  文章来源:水木森林  
  查看:96次  录入:管理员--2007-11-17  
 
  背景资料
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设计浮动按钮程序    下一篇: 用java实现web服务器 http协议
  相关文档
对java同步一些理解 11-17
try catch finally与return的执行顺序 11-17
一种 web 应用程序级别的 cluster 实现技术 11-17
本源xml数据库xindice 介绍 (1.0版) 11-17
程序员杂谈:ajax优于jsf的几个原因讨论 04-14
用aspectj和spring进行依赖项插入 11-16
关于创建java.exe文件的几种方法 11-17
使用 easy struts for eclipse 开发 struts 11-17
用本地引用提高ejb访问效率之一 11-16
[java100例]070、使用jdom解析xml 11-17
jsp/servlet:easyjweb中文件上传的处理 01-25
jbuilder 编辑器常规设置及优化(1) 11-17
完全掌握java中的"包"机制 11-17
java高手解析xml配置文件的读取操作 11-17
第一个jsr-184 midlet 11-17
java编写中容易搞错的一些东西 11-17
java应用程序中的按值传递语义以及相关评论 11-17
java新手解惑(转) 11-17
.net事务处理并发性处理的意义 11-17
用j2me的通用联网框架开发联网应用程序 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息