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

📄 markerfilter.java

📁 BBS论坛系统由JAVA和JSP实现
💻 JAVA
字号:
package net.acai.filter;


import java.util.*;

public class MarkerFilter {

    private boolean 	filteringSubject;
    private boolean 	filteringBody;
	private HashMap		colors;
	private String[]	colorList;
	private String		defaultColor;

   /**
    * Creates a new filter not associated with a message. This is
    * generally only useful for defining a template filter that other
    * filters will be cloned from.
    */
    public MarkerFilter() {
        filteringSubject = false;
        filteringBody = true;

        colors = new HashMap(12);
        colors.put("yellow", "#ffffaa");
        colors.put("orange", "#ffaa88");
        colors.put("purple", "#ffaaff");
        colors.put("cyan", "#aaffff");
        colors.put("red", "#ff8888");
        colors.put("green", "#88ffaa");
        colors.put("blue", "#88aaff");
        colors.put("gray", "#cccccc");

		colorList = (String[])colors.values().toArray(new String[colors.size()]);
        defaultColor = "#ffffaa";
    }

    /**
     * This method takes a string which may contain [img path] or [img=path] tags
     * and replaces them with working image links. It does this
     * by adding the html tag <img src="path">.
     * <p>
     * It also replaces a list of predefined strings with image links.
     * These can for instance show smiley's instead of the :), :-( ascii.
     *
     * @param input the text to be converted.
     * @return the input string with the URLs replaced with links.
     */
    public String hiliteText(String input) {
        // Check if the string is null or zero length
        //  -- if so, return what was sent in.
        if (input == null || input.length() == 0 ) {
            return input;
        }

		// Build the response in a buffer
        StringBuffer buf = new StringBuffer(input.length() + 100);
        char[] chars = input.toCharArray();
        String color = null;
        
        int index = -1, i = 0;
        int n, m;
        int patStart, patEnd;
        int colStart;
        int oldend = 0;
        int len = input.length();
        char cur;

		// handle the [img] pattern and the predefined strings replacements
        while (++index < len) {
        	cur = chars[i = index];

        	if (index + 6 < len &&
        		cur == '[' && chars[++i] == 'm' && chars[++i] == 'a' && chars[++i] == 'r' &&chars[++i] == 'k') {

				// strip spaces
				while (++i < len && (chars[i] == ' ' || chars[i] == '='))
					;
				if (i < len) {
					// find the end of the tag
					colStart = i--;
					while (++i < len && chars[i] != ']')
						;

					if (colStart < i) {
						String arg = new String(chars, colStart, i-colStart);
						color = (String)colors.get(arg);

						if (color == null && "random".equals(arg)) {
							color = colorList[(int)(Math.random() * colorList.length)];
						}
					}
					if (color == null)
						color = defaultColor;

					if (++i < len) {
						patStart = patEnd = i;

				        while (++patEnd < len) {
				        	if (patEnd + 6 < len &&
				        		chars[i = patEnd] == '[' && chars[++i] == '/' && chars[++i] == 'm' && chars[++i] == 'a' &&
				        		chars[++i] == 'r' && chars[++i] == 'k' && chars[++i] == ']') {
				        		break;
				        	}
				        }
						
				        buf.append(chars, oldend, index-oldend);
				        buf.append("<B style=\"background-color:").append(color).append("\">");
				        buf.append(chars, patStart, patEnd-patStart);
				        buf.append("</B>");

						oldend = (patEnd > i) ? patEnd : i + 1;
					}
				}
		        index = i;
        	}
        }
        if (oldend < len) {
	        buf.append(chars, oldend, len-oldend);
        }
        return buf.toString();
    }
		public static void main(String args[]){
		try{
		MarkerFilter filter=new MarkerFilter();
		String test="[mark red]asdf[/mark]";
		
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -