📄 bbsfilter.java
字号:
package com.bcxy.bbs.filter;
/**
* Title:
* Description:
* Copyright:
* Company: www.liyunet.com
*
* @author lishujiang
* @version 1.0
*/
import com.bcxy.bbs.codeviewer.CodeViewer;
import com.bcxy.bbs.util.StringUtils;
public class BBSFilter {
boolean newWindowEnabled = true;
private static final String NEW_LINE = System.getProperty("line.separator");
private String commentStart;
private String commentEnd;
private String stringStart;
private String stringEnd;
private String reservedWordStart;
private String reservedWordEnd;
private CodeViewer viewer;
public BBSFilter() {
viewer = new CodeViewer();
commentStart = viewer.getCommentStart();
commentEnd = viewer.getCommentEnd();
stringStart = viewer.getStringStart();
stringEnd = viewer.getStringEnd();
reservedWordStart = viewer.getReservedWordStart();
reservedWordEnd = viewer.getReservedWordEnd();
}
public String convertURL(String input) {
// 检查字符串是否为空,如果为空,则返回
// 送进一些什么?
if (input == null || input.length() == 0) {
return input;
} else {
StringBuffer buf = new StringBuffer(input.length() + 25);
char[] chars = input.toCharArray();
int i = 0, j = 0, oldend = 0;
int len = input.length();
char cur;
// 搜索字符串中含有的http://
while ((i = input.indexOf("http://", oldend)) >= 0) {
j = i + 7;
cur = chars[j];
while (j < len) {
// 空格
if (cur == ' ')
break;
// html
if (cur == '<')
break;
// 换行
if (cur == '\n')
break;
// Unix的换行
if (cur == '\r' && j < len - 1 && chars[j + 1] == '\n')
break;
j++;
if (j < len) {
cur = chars[j];
}
}
// 检查终结字符'.'或者 ','
// 移出.
if (chars[j - 1] == '.' || chars[j - 1] == ','
|| chars[j - 1] == ')') {
j--;
}
buf.append(chars, oldend, i - oldend);
buf.append("<a href=\"");
buf.append(chars, i, j - i);
buf.append("\"");
if (newWindowEnabled) {
buf.append(" target=\"_blank\">");
} else {
buf.append(">");
}
buf.append(chars, i, j - i);
buf.append("</a>");
oldend = j;
}
buf.append(chars, j, len - j);
return buf.toString();
}
}
public String highlightCode(String input) {
if (input == null || input.length() == 0) {
return input;
} else {
StringBuffer buf = new StringBuffer(input.length() + 50);
int i = 0, j = 0, oldend = 0;
while ((i = input.indexOf("[code]", oldend)) >= 0) {
//
if ((j = input.indexOf("[/code]", i + 6)) < 0) {
//
j = input.length() - 7;
}
//
buf.append(StringUtils.escapeHTMLTags(input
.substring(oldend, i)));
buf
.append("<table width=\"550\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" bordercolorlight = \"black\" bordercolordark = \"#FFFFFF\" align=\"center\">");
buf.append("<tr>");
buf.append("<td bgcolor=\"#e6e6e6\" class=\"code\">");
// buf.append("<pre>");
//
StringBuffer codeBuf = new StringBuffer(input.length() / 2);
//
// i
if (i + 6 + 1 < input.length()
&& (input.charAt(i + 6 + 1) == '\n')) {
i++;
if (i + 6 + 1 < input.length()
&& (input.charAt(i + 6 + 1) == '\r')) {
i++;
}
}
buf.append(StringUtils
.escapeHTMLTags(input.substring(i + 6, j)));
/*
* BufferedReader reader = new BufferedReader(new
* StringReader(input.substring(i+6, j))); String line; try {
* while ((line = reader.readLine()) != null) { // u line =
* StringUtils.replace(line, "<", "<"); line =
* StringUtils.replace(line, ">", ">");
* codeBuf.append(viewer.syntaxHighlight(line));
* codeBuf.append(NEW_LINE); } } catch (IOException ioe) {
* ioe.printStackTrace(); } String code = codeBuf.toString(); //
* code = StringUtils.replace(code, "[", "["); code =
* StringUtils.replace(code, "]", "]");
*/
// buf.append(code);
// buf.append("</pre>");
buf.append("</td>");
buf.append("</tr>");
buf.append("</table>");
//
oldend = j + 7;
}
buf.append(StringUtils.escapeHTMLTags(input.substring(oldend, input
.length())));
return StringUtils.convertNewlines(buf.toString());
}
}
public static void main(String args[]) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -