国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

用JAVA實(shí)現(xiàn)UBB代碼

2019-11-18 15:20:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  背景資料
java與javascript程序設(shè)計(jì)

    一、什么是UBB
  
  UBB代碼是Html的一個(gè)變種,是Ultimate Bulletin Board (國(guó)外一個(gè)BBS程序,國(guó)內(nèi)也有不少地方使用這個(gè)程序)采用的一種非凡Tag。UBB代碼很簡(jiǎn)單,功能很少,但是其Tag語(yǔ)法檢查實(shí)現(xiàn)非常輕易,所以在很多論壇中都得到了應(yīng)用。
  
  UBB代碼一般是以這樣的格式出現(xiàn),“這是粗體”,表示一段粗體文字,其它常用的還有“www.code-maker.com”、“sonymusic china.com”,分別表示一個(gè)超鏈接和一個(gè)E-mail地址的鏈接。具體的例子,請(qǐng)參考Chinaasp論壇(http://www.chinaasp.com/sqlbbs/)。
  
  二、用JAVA實(shí)現(xiàn)UBB代碼
  
  相信大家一定可以想到UBB代碼的解析,其實(shí)就是將“[b][/b]”這樣的格式轉(zhuǎn)換成““”就可以了,但是怎么轉(zhuǎn)換呢?答案是用正則表達(dá)式。利用上一期講到的正則表達(dá)式類(lèi)(sony.utils.Regex)中的eregi_replace替換方法,可以很輕松地做到。下面是一段示例。
  String s="這是粗體";
  String result;
  result = Regex.eregi_replace("/[b/](.+?)/[//b/]","“$1“", s);
  System.out.PRintln(result);
  //打印結(jié)果是:
  //“這是粗體“。
這么簡(jiǎn)單嗎?是的,我們只需要將其它的UBB Tag作類(lèi)似的替換就實(shí)現(xiàn)了UBB代碼的解析了。
三、sony.utils.filter.Ubb類(lèi)的源碼
  在這個(gè)類(lèi)中,只存在一個(gè)parse方法,而且非常短小,因?yàn)槲覍⑺械腢BB Tag和對(duì)應(yīng)的Html Tag放到了一個(gè)二維數(shù)組中了,在parse方法中所做的,只是遍歷這個(gè)數(shù)組,做正則表達(dá)式的替換就可以了。這樣在需要擴(kuò)充UBB代碼集時(shí)也會(huì)方便一些。
  因?yàn)閁BB代碼是不分大小寫(xiě)的,所以這里使用了eregi_replace方法。

  四、一個(gè)測(cè)試UBB代碼的JAVA例子
源程序:
public static void main(java.lang.String[] args)
{
String ubbSource=
"[url href=www.china.com]www.china.com[/url] 斜體 china.com再來(lái)一段粗體boss_ch china.com[hr][#ff0000]紅色[/#]";
if (args.length > 0)
ubbSource= args[0];
System.out.println("輸入的UBB 源代碼:" + ubbSource);
System.out.println("轉(zhuǎn)換后的Html 代碼:" + parse(ubbSource));
}

  五、UBB類(lèi)在jsp程序中的使用
  
  UBB通常是應(yīng)用在網(wǎng)站中的,那么在JSP(一種建設(shè)網(wǎng)站的腳本語(yǔ)言,基于JAVA,在國(guó)外應(yīng)用非常廣泛,國(guó)內(nèi)也有很多人在使用,見(jiàn)http://www.chinaasp.com/sqlbbs/ 中的JSP/EJB版面)中如何使用呢?其實(shí)JSP完全采用Java的語(yǔ)法,所以在看了下面的例子后,大家會(huì)發(fā)現(xiàn)和上一個(gè)例子中的使用方法幾乎一樣。
  
  當(dāng)然,在使用之前,需要將編譯過(guò)的Ubb.class文件放到你的Web Server的WEB-INF/class/sony/utils/filter/目錄下。
  并且這里使用了另一個(gè)類(lèi)sony.utils.filter.HtmlFilter

  六、結(jié)論
因?yàn)檎齽t表達(dá)式的功能如此強(qiáng)大,以至于這個(gè)實(shí)現(xiàn)UBB代碼的類(lèi)只需要60行左右的代碼,而且因?yàn)槭褂昧藬?shù)組來(lái)保存需要替換的UBB Tag和Html Tag,所以擴(kuò)充起來(lái)非常方便,只需要在數(shù)組中增加幾行就行了,主函數(shù)不需改動(dòng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新野县| 财经| 庐江县| 饶河县| 梁山县| 新营市| 南涧| 莎车县| 含山县| 彩票| 多伦县| 民乐县| 惠安县| 和田县| 巴林右旗| 龙游县| 正定县| 木里| 蓝田县| 松溪县| 淄博市| 博爱县| 新闻| 洪江市| 平谷区| 白河县| 冷水江市| 思南县| 邯郸市| 渝中区| 乐昌市| 兴城市| 修水县| 仙桃市| 巨野县| 安宁市| 山西省| 板桥市| 于田县| 甘孜县| 容城县|