这个类使用很方便直接
EncodeString es = new EncodeString();
es.ubbEncoder(需要对其替换的字符串内容或变量);
大家可以直接复制使用,有兴趣研究的朋友可以仔细看看类中正则实现的核心部分 ubbPattern
代码内容
package com.gamvan.tools;
import java.util.regex.*;
public class EncodeString{
public String ubbPattern(String str, String cp, String mc){
//str 准备对其操作的字符串,cp匹配的内容,mc准备替换成的内容
String txt = new String();
txt = str;
if(str!=null && !str.equals("")){
txt = str;
Pattern p = Pattern.compile(cp,2); //参数2表示大小写不区分
Matcher m = p.matcher(txt);
StringBuffer sb = new StringBuffer();
int i=0;
boolean result = m.find();
//使用循环将句子里所有匹配的内容找出并替换再将内容加到sb里
while(result) {
i++;
m.appendReplacement(sb, mc);
//继续查找下一个匹配对象
result = m.find();
}
//最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里;
m.appendTail(sb);
txt = String.valueOf(sb);
}else{
txt = "";
}
return txt;
}
public String ubbEncoder(String str){
//以下仅对论坛几个典型的UBB代码作了替换,大家可以根据需要自己扩充
str = ubbPattern(str,"//[b//](.*?)//[/b//]","<strong>$1</strong>"); //粗体字
str = ubbPattern(str, "//[color=(.*?)//](.*?)//[/color//]","<span style=color:$1>$2</span>"); //颜色
str = ubbPattern(str, "//[url//](.*?)//[/url]","<a href=/"$1/" target=/"_blank/">$1</a>"); //url网址替换
str = ubbPattern(str, "//[url=(.*?)//](.*?)//[url//]","<a href=/"$1/" target=/"_blank/">$2</a>"); //url网址替换
return str;
}
}