分享
 
 
 

用JAVA实现UBB代码

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

背景资料

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


[#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,所以扩充起来非常方便,只需要在数组中增加几行就行了,主函数不需改动。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有