JAVA写的简单UBB类

原创 2005年05月19日 19:53:00

最近做论坛碰到了UBB的问题,这个很大众化的东西,怎么没有JAVA写的解释器呢,实在是该写一个。下面的这个不全,但是可以应付一下。

import java.util.*;

public class HTMLString{
 public HTMLString(){}
 public static String htmlEntities(String str){
  return UBB(str);
 }
 public static boolean hasSpecialCharacter(String str){
  /*用于合法性检查
  if(str.indexOf("//")!=-1){
   return false;
  }
  if(str.indexOf("'")!=-1){
   return false;
  }
  if(str.indexOf('"')!=-1){
   return false;
  }
  if(str.indexOf("<")!=-1){
   return false;
  }
  if(str.indexOf(">")!=-1){
   return false;
  }
  */
  return true;

 }

 public static String UBB(String fString){
  return (ChkString(FormatStr(fString))); 
 }  
 
 //屏蔽HTML代码,并处理回车和换行 
 public static String FormatStr(String fString){
  /*
  fString = repstr(fString, "‘","'");
  fString = repstr(fString, "/"","“");
  fString = repstr(fString, "<","<");
  fString = repstr(fString, "<","<");
  fString = repstr(fString, ">",">");
  fString = repstr(fString, " ","/r");
  */
  fString = repstr(fString, "&acute;","'");
  fString = repstr(fString, "&quot;","/"");
  fString = repstr(fString, "&lt;","<");
  fString = repstr(fString, "&gt;",">");
  fString = repstr(fString, "&nbsp;"," ");
  fString = repstr(fString, " ","/r");
  return (fString); 
 } 
 
 //把UBB代码转换成HTML代码以便正常显示 
 public static String ChkString(String fString){  
  fString = fString.trim();    
  if (fString.equals(""))    
   fString = " ";  
  else{   
   fString = doCode(fString, "<B>", "</B>","<b>","</b>");    
   fString = doCode(fString, "<u>", "</u>", "<u>", "</u>");    
   fString = doCode(fString, "<I>", "</I>", "<i>", "</i>");    
   fString = doCode(fString, "[red]", "[/red]", "<font color=red>", "</font id=red>");
   fString = doCode(fString, "[green]", "[/green]", "<font color=green>", "</font id=green>");
   fString = doCode(fString, "[blue]", "[/blue]", "<font color=blue>", "</font id=blue>");
   fString = doCode(fString, "[white]", "[/white]", "<font color=white>", "</font id=white>");
   fString = doCode(fString, "[purple]", "[/purple]", "<font color=purple>", "</font id=purple>");
   fString = doCode(fString, "[yellow]", "[/yellow]", "<font color=yellow>", "</font id=yellow>");
   fString = doCode(fString, "[violet]", "[/violet]", "<font color=violet>", "</font id=violet>");
   fString = doCode(fString, "[brown]", "[/brown]", "<font color=brown>", "</font id=brown>");
   fString = doCode(fString, "[black]", "[/black]", "<font color=black>", "</font id=black>");
   fString = doCode(fString, "[pink]", "[/pink]", "<font color=pink>", "</font id=pink>");
   fString = doCode(fString, "[orange]", "[/orange]", "<font color=orange>", "</font id=orange>");
   fString = doCode(fString, "[gold]", "[/gold]", "<font color=gold>", "</font id=gold>");
   fString = doCode(fString, "<h1>", "</h1>", "<h1>", "</h1>");    
   fString = doCode(fString, "<h2>", "</h2>", "<h2>", "</h2>");    
   fString = doCode(fString, "<h3>", "</h3>", "<h3>", "</h3>");    
   fString = doCode(fString, "<h4>", "</h4>", "<h4>", "</h4>");    
   fString = doCode(fString, "<h5>", "</h5>", "<h5>", "</h5>");    
   fString = doCode(fString, "<h6>", "</h6>", "<h6>", "</h6>");    
   fString = doCode(fString, "[size=1]", "[/size=1]", "<font size=1>", "</font id=size1>");    
   fString = doCode(fString, "[size=2]", "[/size=2]", "<font size=2>", "</font id=size2>");
   fString = doCode(fString, "[size=3]", "[/size=3]", "<font size=3>", "</font id=size3>");
   fString = doCode(fString, "[size=4]", "[/size=4]", "<font size=4>", "</font id=size4>");
   fString = doCode(fString, "[size=5]", "[/size=5]", "<font size=5>", "</font id=size5>");
   fString = doCode(fString, "[size=6]", "[/size=6]", "<font size=6>", "</font id=size6>");
   fString = doCode(fString, "[left]", "[/left]", "<div align=left>", "</div id=left>");  
   fString = doCode(fString, "<center>", "</center>", "<center>", "</center>");   
   fString = doCode(fString, "<div align=right>", "</div>", "<div align=right>", "</div id=right>");
   fString = doCode(fString, "<pre class=CodeSamp>", "</pre>", "<pre id=code><font face=courier size=3 id=code>", "</font id=code></pre id=code>");
   fString = doCode(fString, "[url]", "[/url]", "<a>", "</a>");
   fString = addlink(fString);
   fString = addBr(fString);
  }  
  return (fString); 
 } 
 
 //方便的替换函数 
 public static String doCode(String fString,String fOTag, String fCTag, String fROTag, String fRCTag){
  fString = repstr(fString, fROTag, fOTag);  
  fString = repstr(fString, fRCTag, fCTag);   
  return (fString); 
 } 
 
 //处理链接 
 public static String addlink(String str){  
  String hrefTagPre = "<a>";  
  String hrefTagLast = "</a>";  
  String hrefTxt = "";  
  String  strReturn = "";  
  int iSearchedFrom = 0 ;  
  int first = 0;  
  int last = 0;   
  while  (( iSearchedFrom=str.indexOf( hrefTagPre , iSearchedFrom) ) != -1 ){  
   first = iSearchedFrom + 3;   
   if (( iSearchedFrom=str.indexOf( hrefTagLast , iSearchedFrom) ) != -1 ) { 
    last = iSearchedFrom;    
    iSearchedFrom += 4;      
    strReturn = str.substring( first, last);  
    if (strReturn.indexOf( "<a>", 0) != -1){ 
     strReturn = repstr ( strReturn , "", "<a>");
    }         
    hrefTxt = "<a href =" +strReturn  + " target=/"_blank/">" + strReturn + "</a>";
    strReturn = str.substring( first - 3 , iSearchedFrom);   
    str = repstr(str, hrefTxt ,strReturn );   
    iSearchedFrom =0;   
   }else    
    break;    
  }
  return (str); 
 } 
 
 public static String fd(String str){
  String fd=repstr(str,"''","'"); 
  return fd; 
 } 
 
 public static String repstr(String str, String strDen, String strSrc){ 
  int iLen = str.length();  
  int iDenLen = strDen.length(); 
  int iSrcLen = strSrc.length(); 
  String strReturn = "";  
  int iSearchedFrom = 0 ;  
  int iPrevSearchedFrom = 0;  
  while ( (iSearchedFrom = str.indexOf(strSrc , iSearchedFrom)) != -1 ){ 
   strReturn += str.substring(iPrevSearchedFrom, iSearchedFrom);  
   strReturn += strDen;  
   iSearchedFrom += iSrcLen; 
   iPrevSearchedFrom = iSearchedFrom;  
  }   
  if ( iPrevSearchedFrom !=0 )
   strReturn += str.substring( str.lastIndexOf(strSrc) + iSrcLen   , str.length());
  else   
   strReturn = str;   
  return(strReturn); 
 } 
 
 public static String RemoveComment(String Content) {
  String makeContent=new String(); 
  StringTokenizer strToken=new StringTokenizer(Content,"/n"); 
  String tempToken=null;  
  while(strToken.hasMoreTokens()) {  
   tempToken=strToken.nextToken();  
   if(tempToken.indexOf(":")!=0)  
    makeContent=makeContent+tempToken+"/n";  
  }  
  return makeContent;
 } 
 
 public static String addBr(String Content) { 
  String makeContent=new String();  
  StringTokenizer strToken=new StringTokenizer(Content,"/n"); 
  while(strToken.hasMoreTokens()){ 
   String sNext = strToken.nextToken();  
   makeContent=makeContent + sNext.substring(0,sNext.length()-1) + "<br>"; 
  }  
  return makeContent; 
 }   
 
 public static String delBr(String Content) {  
  String makeContent=new String();  
  StringTokenizer strToken=new StringTokenizer(Content,"<br>");  
  while(strToken.hasMoreTokens()) {   
   String sNext = strToken.nextToken();   
   makeContent=makeContent + sNext.substring(0,sNext.length()-4) + "/n";  
  }  
  return makeContent; 
 }
}

实现ubb代码的java类

  • 2003年10月05日 00:00
  • 31KB
  • 下载

一个简单好用的UBB编辑器

  • 2008年12月09日 12:57
  • 120KB
  • 下载

PHP-YII-UBB类仅供参考

非常简单的ubb编辑器

  • 2009年05月04日 10:45
  • 4KB
  • 下载

UBB编辑器,简单的在线编辑器

  • 2010年04月12日 19:14
  • 120KB
  • 下载

ASP中,UBB代码中,为何Quote不能一段一段地进行引用呢?

UBB.asp代码如下: Const MaxLoopcount=50 function ubb(bod)  'h=2为转换帖,h=1为转换签名 Set re=new RegExp  '声明正则表...

Ubb简单编辑器

  • 2012年02月22日 16:48
  • 166KB
  • 下载

C#处理Ubb代码类

  • 2014年07月10日 11:33
  • 19KB
  • 下载

Html转UBB的JS版本【寻求更好的方案】

Html转UBB的JS版本【寻求更好的方案】
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA写的简单UBB类
举报原因:
原因补充:

(最多只允许输入30个字)