一个实现UBB功能的BEAN代码!
package beans.util;

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,
""","\"");
fString = repstr(fString,
"<","<");
fString = repstr(fString,
">","]");
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>", "[/url]");
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 =
"[/url]";
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 + "[/url]";
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;
}
}
meiking   2005-03-16 14:01:53 评论:4   阅读:995   引用:0
调整问题 @2005-03-16 15:33:59  hofman
如果是<font size="8" color="red">呢。
我们的ubb出现问题,其实主要是因为迁就可视编辑器。
过一段时间,就该收拾收拾我们的zdu.jarl 了。
你所贴的代码,并未考虑将html转化为ubb的情况,并且还有应该浏览器兼容性的问题,这才是麻烦的地方。
无题 @2005-03-16 14:37:02  过客
<pre [b]style[/b]="margin:0px; padding:6px; border:1px inset; overflow:auto">

</pre>

这样就可以把代码放在一个黑边的小框中
无题 @2005-03-16 14:28:21  meiking
我感觉我们的code代码显示的好挤啊,为什么不加一个 <pre> 标签呢, <pre> </pre> 就可以让代码显示格式和在记事本里一样了. 就比如 "TAB" , "空格之类的" !
无题 @2005-03-16 14:09:14  meiking
好像我们的 code 代码好像这块有些问题!
(fString, "´","'");
fString = repstr(fString, ""","\"");
fString = repstr(fString, "<","<");
fString = repstr(fString, ">","]");
fString = repstr(fString, " "," ");
fString = repstr(fString, " ","\r");

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

谢智的个人博客 @CSS by self