⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ubbcode.java

📁 jsp+javabean写的论坛
💻 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 + -