📄 ubbcode.java
字号:
package com.alumni.bean;
import java.util.regex.*;
public class UbbCode
{
//定义要替换的数据源
private String source;
//定义UBB代码标签
private String[] ubbTags;
//定义相应的HTML标签
private String[] htmlTags;
//构造器
public UbbCode()
{
int max=52;
source=new String();
//初始化一般的标签
ubbTags=new String[max];
htmlTags=new String[max];
//粗体
ubbTags[0]="[b]";
htmlTags[0]="<b>";
ubbTags[1]="[/b]";
htmlTags[1]="</b>";
//斜体
ubbTags[2]="[i]";
htmlTags[2]="<em>";
ubbTags[3]="[/i]";
htmlTags[3]="</em>";
//替换引用标签
ubbTags[4]="[quote]";
htmlTags[4]="<div style=\"border-style:dashed;background-color:#CCCCCC;border-width:thin;border-color:#999999\"><br><em>";
ubbTags[5]="[/quote]";
htmlTags[5]="</em><br><br></div>";
//字体大小
ubbTags[6]="[/size]";
htmlTags[6]="</font>";
ubbTags[7]="[size=6]";
htmlTags[7]="<font style=\"font-size:6px\">";
ubbTags[8]="[size=8]";
htmlTags[8]="<font style=\"font-size:8px\">";
ubbTags[9]="[size=10]";
htmlTags[9]="<font style=\"font-size:10px\">";
ubbTags[10]="[size=12]";
htmlTags[10]="<font style=\"font-size:12px\">";
ubbTags[11]="[size=14]";
htmlTags[11]="<font style=\"font-size:14px\">";
ubbTags[12]="[size=18]";
htmlTags[12]="<font style=\"font-size:18px\">";
ubbTags[13]="[size=24]";
htmlTags[13]="<font style=\"font-size:24px\">";
ubbTags[14]="[size=36]";
htmlTags[14]="<font style=\"font-size:36px\">";
//字体格式式样
ubbTags[15]="[/font]";
htmlTags[15]="</font>";
ubbTags[16]="[font=宋体]";
htmlTags[16]="<font face=\"宋体\">";
ubbTags[17]="[font=黑体]";
htmlTags[17]="<font face=\"黑体\">";
ubbTags[18]="[font=隶书]";
htmlTags[18]="<font face=\"隶书\">";
ubbTags[19]="[font=仿宋_GB2312]";
htmlTags[19]="<font face=\"仿宋_GB2312\">";
ubbTags[20]="[font=幼圆]";
htmlTags[20]="<font face=\"幼圆\">";
ubbTags[21]="[font=Arial]";
htmlTags[21]="<font face=\"Arial\">";
ubbTags[22]="[font=Times New Roman]";
htmlTags[22]="<font face=\"Times New Roman\">";
//字体颜色
ubbTags[23]="[red]";
htmlTags[23]="<font color=\"red\">";
ubbTags[24]="[/red]";
htmlTags[24]="</font>";
ubbTags[25]="[blue]";
htmlTags[25]="<font color=\"blue\">";
ubbTags[26]="[/blue]";
htmlTags[26]="</font>";
ubbTags[27]="[yellow]";
htmlTags[27]="<font color=\"yellow\">";
ubbTags[28]="[/yellow]";
htmlTags[28]="</font>";
ubbTags[29]="[green]";
htmlTags[29]="<font color=\"green\">";
ubbTags[30]="[/green]";
htmlTags[30]="</font>";
//标题字体
ubbTags[31]="[h1]";
htmlTags[31]="<h1>";
ubbTags[32]="[/h1]";
htmlTags[32]="</h1>";
ubbTags[33]="[h2]";
htmlTags[33]="<h2>";
ubbTags[34]="[/h2]";
htmlTags[34]="</h2>";
ubbTags[35]="[h3]";
htmlTags[35]="<h3>";
ubbTags[36]="[/h3]";
htmlTags[36]="</h3>";
ubbTags[37]="[h4]";
htmlTags[37]="<h4>";
ubbTags[38]="[/h4]";
htmlTags[38]="</h4>";
ubbTags[39]="[h5]";
htmlTags[39]="<h5>";
ubbTags[40]="[/h5]";
htmlTags[40]="</h5>";
ubbTags[41]="[h6]";
htmlTags[41]="<h6>";
ubbTags[42]="[/h6]";
htmlTags[42]="</h6>";
//加分割线
ubbTags[43]="[hr]";
htmlTags[43]="<hr>";
//替换图片链接标签
ubbTags[44]="[img]";
htmlTags[44]="<br><img src=\"";
ubbTags[45]="[/img]";
htmlTags[45]="\"><br>";
//字体居中
ubbTags[46]="[center]";
htmlTags[46]="<div align=\"center\">";
ubbTags[47]="[/center]";
htmlTags[47]="</div>";
//字体靠左
ubbTags[48]="[left]";
htmlTags[48]="<div align=\"left\">";
ubbTags[49]="[/left]";
htmlTags[49]="</div>";
//字体靠右
ubbTags[50]="[right]";
htmlTags[50]="<div align=\"right\">";
ubbTags[51]="[/right]";
htmlTags[51]="</div>";
}
//替换标签
//input是将要替换的字符串,ubbTag是其中包含的UBB标签,htmlTag是对应的html标签
//返回替换后的字符串
private String replace(String input,String ubbTag,String htmlTag)
{
StringBuffer ubb=new StringBuffer();
for(int i=0;i<ubbTag.length();i++)
{
//把"["和"]"转换成正则表达式
char c=ubbTag.charAt(i);
switch(c)
{
case '[':
ubb.append("\\[");
break;
case ']':
ubb.append("\\]");
break;
default:
ubb.append(c);
}
}
Pattern p=Pattern.compile(ubb.toString());
Matcher m=p.matcher(input);
StringBuffer sb=new StringBuffer();
boolean result=m.find();
while(result)
{
m.appendReplacement(sb,htmlTag);
result=m.find();
}
//System.out.println(ubb.toString());
return m.appendTail(sb).toString();
}
//替换一般的UBB标签,转换成HTML格式
private String replaceNormalUBBCode(String input)
{
String result=new String(input);
for(int i=0;i<this.ubbTags.length;i++)
{
result=this.replace(result,this.ubbTags[i],this.htmlTags[i]);
}
return result;
}
//替换特殊的url标签:[url]xxxxxx[/url]
private String replaceURL(String input)
{
StringBuffer inputSb=new StringBuffer(input);
String middle=new String();
int startP=input.indexOf("[url]");
int endP=input.indexOf("[/url]");
if(startP!=-1&&endP!=-1&&startP<endP)
{
middle=input.substring(startP+5,endP);
String link="<a href=\""+middle+"\">"+middle+"</a>";
inputSb.replace(startP,endP+6,link);
}
return inputSb.toString();
}
//替换特殊的email标签:[email]xxxxxx[/email]
private String replaceEmail(String input)
{
StringBuffer inputSb=new StringBuffer(input);
String middle=new String();
int startP=input.indexOf("[email]");
int endP=input.indexOf("[/email]");
if(startP!=-1&&endP!=-1&&startP<endP)
{
middle=input.substring(startP+7,endP);
String link="<a href=\"mailto:"+middle+"\">"+middle+"</a>";
inputSb.replace(startP,endP+8,link);
}
return inputSb.toString();
}
//设定数据源
public void setSource(String source)
{
this.source=source;
}
//获得处理后的数据塬
public String getResult()
{
return this.source;
}
//运行
public void run()
{
this.source=this.replaceNormalUBBCode(this.source);
while(this.source.indexOf("[url]")!=-1&&this.source.indexOf("[/url]")!=-1)
{
this.source=this.replaceURL(this.source);
}
while(this.source.indexOf("[email]")!=-1&&this.source.indexOf("[/email]")!=-1)
{
this.source=this.replaceEmail(this.source);
}
}
/* public static void main(String args[])
{
UbbCode u=new UbbCode();
String input="[b]xxxxxx[/b],[url]www.sina.com.cn[/url],[url]www.online.sh.cn[/url][email]wangsheng@citiz.net[/email],[email]systra@systra.com.cn[/email]";
while(input.indexOf("[url]")!=-1)
{
input=u.replaceURL(input);
}
while(input.indexOf("[email]")!=-1)
{
input=u.replaceEmail(input);
}
System.out.println(input);
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -