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

📄 stringutil.java

📁 struts spring ibatis
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		if (str == null || str.length() < 1)
			return hash;
		String pairs[] = str2arr(str);
		for (int i = 0; i < pairs.length; i++)
			try {
				int index = pairs[i].indexOf("=");
				String key1 = decode(pairs[i].substring(0, index));
				if (index == pairs[i].length() || index < 0)
					hash.put(key1, "");
				else
					hash.put(key1, pairs[i].substring(index + 1));
			} catch (Exception exception) {
			}

		return hash;
	}

	public static String getClassName(Class c) {
		String long_name = c.getName();
		return long_name.substring(long_name.lastIndexOf(".") + 1);
	}

	public static final String zeroPadString(String string, int length) {
		if (string == null || string.length() > length) {
			return string;
		} else {
			StringBuffer buf = new StringBuffer(length);
			buf.append(zeroArray, 0, length - string.length()).append(string);
			return buf.toString();
		}
	}

	public static final String highlightWords2(String str, String words[]) {
		String tmp = null;
		try {
			tmp = highlightWords(str, words,
					"<font style='background-color:#ffff00'><b>", "</b></font>");
		} catch (Exception exception) {
		}
		if (tmp == null)
			return str;
		else
			return tmp;
	}

	public static final String highlightWords(String str, String words[]) {
		String tmp = null;
		try {
			tmp = highlightWordsInHtml(str, words);
		} catch (Exception exception) {
		}
		if (tmp == null)
			return str;
		else
			return tmp;
	}

	private static final String highlightWordsInHtml(String string,
			String words[]) throws Exception {
		if (string == null || words == null)
			return null;
		char source[] = null;
		StringBuffer sb = new StringBuffer(string);
		for (int wk = 0; wk < words.length; wk++)
			if (words[wk] != null) {
				source = sb.toString().toCharArray();
				sb.setLength(0);
				int sourceOffset = 0;
				int sourceCount = source.length;
				char target[] = words[wk].toLowerCase().toCharArray();
				int targetOffset = 0;
				int targetCount = target.length;
				int fromIndex = 0;
				if (fromIndex < sourceCount && targetCount != 0) {
					char first = target[targetOffset];
					int i = sourceOffset + fromIndex;
					int max = sourceOffset + (sourceCount - targetCount);
					int sbPos = 0;
					int tags1 = 0;
					char c = '\0';
					label0: do {
						while (i <= max) {
							c = source[i];
							switch (c) {
							case 60: // '<'
								tags1++;
								break;

							case 62: // '>'
								if (tags1 > 0)
									tags1--;
								break;

							case 10: // '\n'
							case 44: // ','
								tags1 = 0;
								break;
							}
							if (Character.toLowerCase(c) == first)
								break;
							i++;
						}
						if (i > max)
							break;
						if (tags1 != 0) {
							i++;
							continue;
						}
						int j = i + 1;
						int end = (j + targetCount) - 1;
						int k = targetOffset + 1;
						while (j < end)
							if (Character.toLowerCase(source[j++]) != target[k++]) {
								i++;
								continue label0;
							}
						int pos = i - sourceOffset;
						sb.append(source, sbPos, pos - sbPos);
						sb.append(startHighlight[wk % startHighlight.length]);
						sb.append(source, pos, targetCount);
						sb.append("</b></font>");
						sbPos = pos + targetCount;
						i += targetCount;
					} while (true);
					sb.append(source, sbPos, sourceCount - sbPos);
				}
			}

		return sb.toString();
	}

	public static final String highlightWords(String string, String words[],
			String startHighlight, String endHighlight) throws Exception {
		if (string == null || words == null || startHighlight == null
				|| endHighlight == null)
			return null;
		StringBuffer regexp = new StringBuffer();
		for (int x = 0; x < words.length; x++) {
			words[x] = perl5Util.substitute("s#([\\|\\/\\.])#\\\\$1#g",
					words[x]);
			if (regexp.length() > 0)
				regexp.append("|");
			regexp.append(words[x]);
		}

		startHighlight = perl5Util.substitute("s#\\/#\\\\/#g", startHighlight);
		endHighlight = perl5Util.substitute("s#\\/#\\\\/#g", endHighlight);
		regexp.insert(0, "s/(");
		regexp.append(")/");
		regexp.append(startHighlight);
		regexp.append("$1");
		regexp.append(endHighlight);
		regexp.append("/igm");
		return perl5Util.substitute(regexp.toString(), string);
	}

	public static final String replace(String line, String oldString,
			String newString) {
		if (line == null)
			return null;
		int i = 0;
		if ((i = line.indexOf(oldString, i)) >= 0) {
			char line2[] = line.toCharArray();
			char newString2[] = newString.toCharArray();
			int oLength = oldString.length();
			StringBuffer buf = new StringBuffer(line2.length);
			buf.append(line2, 0, i).append(newString2);
			i += oLength;
			int j;
			for (j = i; (i = line.indexOf(oldString, i)) > 0; j = i) {
				buf.append(line2, j, i - j).append(newString2);
				i += oLength;
			}
			buf.append(line2, j, line2.length - j);
			return buf.toString();
		} else {
			return line;
		}
	}

	public static final String replaceIgnoreCase(String line, String oldString,
			String newString) {
		if (line == null)
			return null;
		String lcLine = line.toLowerCase();
		String lcOldString = oldString.toLowerCase();
		int i = 0;
		if ((i = lcLine.indexOf(lcOldString, i)) >= 0) {
			char line2[] = line.toCharArray();
			char newString2[] = newString.toCharArray();
			int oLength = oldString.length();
			StringBuffer buf = new StringBuffer(line2.length);
			buf.append(line2, 0, i).append(newString2);
			i += oLength;
			int j;
			for (j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i) {
				buf.append(line2, j, i - j).append(newString2);
				i += oLength;
			}

			buf.append(line2, j, line2.length - j);
			return buf.toString();
		} else {
			return line;
		}
	}

	public static final String replaceIgnoreCase(String line, String oldString,
			String newString, int count[]) {
		if (line == null)
			return null;
		String lcLine = line.toLowerCase();
		String lcOldString = oldString.toLowerCase();
		int i = 0;
		if ((i = lcLine.indexOf(lcOldString, i)) >= 0) {
			int counter = 0;
			char line2[] = line.toCharArray();
			char newString2[] = newString.toCharArray();
			int oLength = oldString.length();
			StringBuffer buf = new StringBuffer(line2.length);
			buf.append(line2, 0, i).append(newString2);
			i += oLength;
			int j;
			for (j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i) {
				counter++;
				buf.append(line2, j, i - j).append(newString2);
				i += oLength;
			}

			buf.append(line2, j, line2.length - j);
			count[0] = counter;
			return buf.toString();
		} else {
			return line;
		}
	}

	public static final String replace(String line, String oldString,
			String newString, int count[]) {
		if (line == null)
			return null;
		int i = 0;
		if ((i = line.indexOf(oldString, i)) >= 0) {
			int counter = 0;
			counter++;
			char line2[] = line.toCharArray();
			char newString2[] = newString.toCharArray();
			int oLength = oldString.length();
			StringBuffer buf = new StringBuffer(line2.length);
			buf.append(line2, 0, i).append(newString2);
			i += oLength;
			int j;
			for (j = i; (i = line.indexOf(oldString, i)) > 0; j = i) {
				counter++;
				buf.append(line2, j, i - j).append(newString2);
				i += oLength;
			}

			buf.append(line2, j, line2.length - j);
			count[0] = counter;
			return buf.toString();
		} else {
			return line;
		}
	}

	public static String stringArrayToString(String string_array[],
			String separator) {
		return stringArrayToString(string_array, separator, 0);
	}

	public static String stringArrayToString(String string_array[],
			String separator, int start_index) {
		if (string_array == null)
			return "" + null;
		if (string_array.length == 0)
			return "";
		if (separator == null)
			separator = "";
		int length = string_array.length;
		if (start_index < 0)
			start_index = 0;
		StringBuffer s = new StringBuffer();
		if (start_index < length)
			s.append(string_array[start_index]);
		for (int i = start_index + 1; i < length; i++) {
			s.append(separator);
			if (string_array[i] != null)
				s.append(string_array[i]);
		}

		return s.toString();
	}

	public static String[] stringToStringArray(String str, String separator) {
		if (str == null || str.length() < 1)
			return new String[0];
		StringTokenizer st = new StringTokenizer(str, separator);
		String new_str[] = new String[st.countTokens()];
		int i = 0;
		while (st.hasMoreTokens())
			new_str[i++] = st.nextToken();
		return new_str;
	}

	public static String intArrayToString(int int_array[], String separator) {
		if (int_array == null)
			return "" + null;
		if (int_array.length == 0)
			return "";
		if (separator == null)
			separator = "";
		int length = int_array.length;
		StringBuffer s = new StringBuffer();
		if (length > 0)
			s.append(int_array[0]);
		for (int i = 1; i < length; i++) {
			s.append(separator);
			s.append(int_array[i]);
		}

		return s.toString();
	}

	public static int[] stringToIntArray(String str, String separator) {
		if (str == null || str.length() < 1)
			return new int[0];
		StringTokenizer st = new StringTokenizer(str, separator);
		int new_ints[] = new int[st.countTokens()];
		int i = 0;
		while (st.hasMoreTokens())
			try {
				new_ints[i] = Integer.parseInt(st.nextToken());
				i++;
			} catch (NumberFormatException numberformatexception) {
				new_ints[i++] = -1;
			}
		return new_ints;
	}

	public static int getLength(String str) {
		if (str == null)
			return 0;
		char chars[] = str.toCharArray();
		int n = 0;
		for (int i = 0; i < chars.length; i++)
			if (Character.UnicodeBlock.of(chars[i]) == Character.UnicodeBlock.BASIC_LATIN)
				n++;
			else
				n += 2;

		return n;
	}

	public static final String randomString(int length) {
		if (length < 1)
			return null;
		char randBuffer[] = new char[length];
		for (int i = 0; i < randBuffer.length; i++)
			randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];

		return new String(randBuffer);
	}

	public static final int randomInt(int length) {
		if (length < 1 && length > 9)
			throw new ArithmeticException(
					"the length of random int must be between 0 and 9");
		int sum = 0;
		int n = 1;
		int r = 0;
		for (int i = 1; i < length; i++) {
			r = randGen.nextInt(10);
			sum += r * n;
			n *= 10;
		}

		r = 1 + randGen.nextInt(9);
		sum += r * n;
		return sum;
	}

	public static void main(String args[]) throws Exception {
		System.err.println(isEmailAddress("jimmy.yee.wang@elong.com"));
	}

	public static int indexOfIgnoreCase(String body, String p) {
		p = p.toLowerCase();
		char source[] = body.toCharArray();
		int sourceOffset = 0;
		int sourceCount = source.length;
		char target[] = p.toCharArray();
		int targetOffset = 0;
		int targetCount = target.length;
		int fromIndex = 0;
		if (fromIndex >= sourceCount)
			return targetCount != 0 ? -1 : sourceCount;
		if (fromIndex < 0)
			fromIndex = 0;
		if (targetCount == 0)
			return fromIndex;
		char first = target[targetOffset];
		int i = sourceOffset + fromIndex;
		int max = sourceOffset + (sourceCount - targetCount);
		label0: do {
			while (i <= max && Character.toLowerCase(source[i]) != first)
				i++;
			if (i > max)
				return -1;
			int j = i + 1;
			int end = (j + targetCount) - 1;
			int k = targetOffset + 1;
			while (j < end)
				if (Character.toLowerCase(source[j++]) != target[k++]) {
					i++;
					continue label0;
				}
			return i - sourceOffset;
		} while (true);
	}

	public static final String escapeForXML(String string) {
		if (string == null)
			return null;
		int i = 0;
		int last = 0;
		char input[] = string.toCharArray();
		int len = input.length;
		StringBuffer out = new StringBuffer((int) ((double) len * 1.3D));
		for (; i < len; i++) {
			char ch = input[i];
			if (ch <= '>')
				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(AMP_ENCODE);
				} else if (ch == '"') {
					if (i > last)
						out.append(input, last, i - last);
					last = i + 1;
					out.append(QUOTE_ENCODE);
				}
		}

		if (last == 0)
			return string;
		if (i > last)
			out.append(input, last, i - last);
		return out.toString();
	}

	public static String cutString(String str, int len) {
		try {
			byte bytes[] = str.getBytes(SYS_ENCODING);
			if (bytes.length < len)
				return str;
			else
				return new String(bytes, 0, len - 1, SYS_ENCODING);
		} catch (Exception exception) {
			return str.substring(0, Math.min(str.length(), len) - 1);
		}
	}

	public static int getBytesLength(String str) {
		try {
			return str.getBytes(SYS_ENCODING).length;
		} catch (Exception exception) {
			return str.getBytes().length;
		}
	}

	public static final String unescapeFromXML(String string) {
		string = replace(string, "&lt;", "<");
		string = replace(string, "&gt;", ">");
		string = replace(string, "&quot;", "\"");
		return replace(string, "&amp;", "&");
	}

	public StringUtil() {
	}

	private static final char IllegalEmailChar[] = { ' ', ',', ';', '!', '#',
			'$', '%', '^', '&', '*', '(', ')', '[', ']', '{', '}', ':', '"',
			'\'', '?', '+', '=', '|', '\\' };

	private static final String key = "4c3oRx51u";

	private static final SecretKeySpec skeySpec = new SecretKeySpec(key
			.getBytes(), "Blowfish");

	public static final DateFormat SIMPLE_DATE_FORMATTER = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss");

	public static final DateFormat DATE_FORMATTER = DateFormat
			.getDateTimeInstance(1, 1);

	public static final String SYS_ENCODING = "GBK";

	public static final String DEFAULT_ENCODING = System.getProperty(
			"file.encoding", "ISO-8859-1");

	private static final char zeroArray[] = "0000000000000000".toCharArray();

	public static final Blowfish cipher = new Blowfish(key);

	private static boolean useJCE = false;

	private static Perl5Util perl5Util = new Perl5Util();

	static final String startHighlight[] = {
			"<font style='background-color:#ffff00'><b>",
			"<font style='background-color:#00ff00'><b>",
			"<font style='background-color:#ff9999'><b>" };

	static final String endHighlight = "</b></font>";

	private static Random randGen = new Random();

	private static char numbersAndLetters[] = ("0123456789abcdefghijklmnopqrstuvwxyz"
			+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

	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();

	static {
		try {
			if (useJCE) {
				java.security.Provider sunJce = new SunJCE();
				Security.addProvider(sunJce);
				useJCE = true;
			} else {
				useJCE = false;
			}
		} catch (Exception ex) {
			useJCE = false;
			ex.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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