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

📄 stringutils.java

📁 一个功能较为完善的论坛
💻 JAVA
字号:
/*
 * XP Forum
 *
 * Copyright (c) 2002-2003 RedSoft Group.  All rights reserved.
 *
 */
package org.redsoft.forum.util;

/**
 * String processing utilities
 *
 * @author <a href="mailto:jwtronics@yahoo.com">John Wong</a>
 *
 * @version $Id: StringUtils.java,v 1.1.1.1 2003/07/08 08:25:17 cinc Exp $
 */
public final class StringUtils {
	// constants used by escapeHTMLTags
	private static final char[] QUOTE_ENCODE = "&quot;".toCharArray();
	private static final char[] AMP_ENCODE = "&amp;".toCharArray();
	private static final char[] LT_ENCODE = "&lt;".toCharArray();
	private static final char[] GT_ENCODE = "&gt;".toCharArray();
	private static final char[] APOS_ENCODE = "&apos;".toCharArray();
	private static final char[] DOUBLT_QUOTE_ENCODE = "&quot;".toCharArray();

	/**
	 * This method takes a string which may contain HTML tags (ie, &lt;b&gt;,
	 * &lt;table&gt;, etc) and converts the '&lt'' and '&gt;' characters to
	 * their HTML escape sequences.
	 *
	 * @param in the text to be converted.
	 * @return the input string with the characters '&lt;' and '&gt;' replaced
	 *  with their HTML escape sequences.
	 */
	public static final String escapeHTMLTags(String in) {
		if (in == null) {
			return null;
		}
		char ch;
		int i = 0;
		int last = 0;
		char[] input = in.toCharArray();
		int len = input.length;
		StringBuffer out = new StringBuffer((int) (len * 1.3));
		for (; i < len; i++) {
			ch = input[i];
			if (ch > '>') {
				continue;
			} else if (ch == '<') {
				if (i > last) {
					out.append(input, last, i - last);
				}
				last = i + 1;
				out.append(LT_ENCODE);
			} else if (ch == '>') {
				if (i > last) {
					out.append(input, last, i - last);
				}
				last = i + 1;
				out.append(GT_ENCODE);
			}else if( ch== '"'){
				if (i > last) {
					out.append(input, last, i - last);
				}
				last = i + 1;
				out.append(DOUBLT_QUOTE_ENCODE);
			}
		}
		if (last == 0) {
			return in;
		}
		if (i > last) {
			out.append(input, last, i - last);
		}
		return out.toString();
	}

	/**
	 * This method takes a string which may contain HTML tags (ie, &lt;b&gt;,
	 * &lt;table&gt;, etc) and converts the '&lt'' and '&gt;' characters to
	 * their HTML escape sequences.
	 *
	 * @param in the text to be converted.
	 * @return the input string with the characters '&lt;' and '&gt;' replaced
	 *  with their HTML escape sequences.
	 */
	public static final String escapeHTMLTagsButHref(String in) {
		if (in == null) {
			return null;
		}
		char ch;
		int i = 0;
		int last = 0;
		char[] input = in.toCharArray();
		int len = input.length;
		boolean ahref = false;
		boolean img = false;
		StringBuffer out = new StringBuffer((int) (len * 1.3));
		for (; i < len; i++) {
			ch = input[i];
			if( ahref ){
				if( ch == '<' && input[ i+1 ] == '/' && input[i+2] == 'a' && input[ i+3 ] == '>' ){
					i = i + 3;
					ahref = false;
				}else if(ch == '<') {
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(LT_ENCODE);
				}else if( ch== '"'){
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(DOUBLT_QUOTE_ENCODE);
				}
			}else if( img ){
				if( ch== '/' && input[ i+ 1 ] == '>' ){
					i++;
					img = false;
				}else if(ch == '<') {
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(LT_ENCODE);
				}else if( ch== '"'){
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(DOUBLT_QUOTE_ENCODE);
				}
			}else{
				if( ch == '<' && input[ i + 1 ] == 'a' ){
					ahref = true;
				}else if( ch == '<' && input[i+1] == 'i' && input[i+2] == 'm' && input[i+3] == 'g'){
					img = true;
				}else{
					if(ch == '<') {
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(LT_ENCODE);
					}else if (ch == '>') {
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(GT_ENCODE);
					}else if( ch== '"'){
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append(DOUBLT_QUOTE_ENCODE);
					}else if( ch == '\n' ){
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append("<br>");
					}else if( ch == ' ' ){
						if (i > last) {
							out.append(input, last, i - last);
						}
						last = i + 1;
						out.append("&nbsp;");
					}
				}
			}
		}
		if (last == 0) {
			return in;
		}
		if (i > last) {
			out.append(input, last, i - last);
		}
		return out.toString();
	}

	/**
	 * If two String are equal
	 */
	public static boolean isEqual(String str1, String str2) {
		if(str1 == null && str2 != null) return false;

		if(str1.equals(str2)) return true;

		return false;
	}

	public static String replaceNewLine( final String in ){
		if (in == null) {
				return null;
			}
			char ch;
			char[] input = in.toCharArray();
			int len = input.length;
			final StringBuffer out = new StringBuffer((int) (len * 1.3));
			for ( int index = 0; index < len; index++) {
				ch = input[ index ];
				if( ch == '\n' ){
					out.append("<br>");
				}else if( ch == ' ' ){
					out.append("&nbsp;");
				}else{
					out.append( ch );
				}

			}
			return out.toString();
	}

}//EOC

⌨️ 快捷键说明

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