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

📄 strings.java

📁 XML 解释器(字符串变量): 通常的XML解释
💻 JAVA
字号:
package com.hiany.util;

import java.io.UnsupportedEncodingException;
import java.util.StringTokenizer;

import org.apache.log4j.Logger;

public class Strings {
	static Logger logger = Logger.getLogger(Strings.class);
	
	/**
	 * 生成指定长度的随机字符串,包含数字、大写字母、小写字母;
	 * 
	 * @param length
	 * @return
	 */
	public static String radmonCharecters(int length) {
		StringBuffer sb = new StringBuffer();

		for (int i = 0; i < length; i++) {
			char n = (char) (Math.random() * 62);
			if (n < 10) {
				n += 48; // 数字
			} else if (n < 36) {
				n = (char) ((n - 10) + 65); // 大写字母
			} else {
				n = (char) ((n - 36) + 97); // 小写字母
			}
			sb.append(n);
		}

		return sb.toString();
	}

	/**
	 * 生成指定长度的随机16进制数;
	 * 
	 * @param length
	 * @return
	 */
	public static String radmonHexs(int length) {
		StringBuffer sb = new StringBuffer();

		for (int i = 0; i < length; i++) {
			char n = (char) (Math.random() * 16);
			if (n < 10) {
				n += 48; // 数字
			} else {
				n = (char) ((n - 10) + 97); // 小写字母
			}
			sb.append(n);
		}

		return sb.toString();
	}

	/**
	 * 生成指定长度的随机数字串;
	 * 
	 * @param length
	 * @return
	 */
	public static String radmonNumbers(int length) {
		StringBuffer sb = new StringBuffer();

		for (int i = 0; i < length; i++) {
			int n = (int) (Math.random() * 10);
			sb.append(n);
		}

		return sb.toString();
	}

	/**
	 * 计算StringBuffer中指定字符串出现的次数;
	 * 
	 * @param sb
	 *            源字符串缓冲区
	 * @param str
	 *            要计算出现次数的字符串
	 * @return
	 */
	public static int countWords(StringBuffer sb, String str) {
		int cnt = 0;
		for (int pos = 0;;) {
			pos = sb.indexOf(str, pos);
			if (pos < 0) {
				break;
			}
			cnt++;

			if (pos < sb.length() + str.length()) {
				pos += str.length();
			} else {
				break;
			}
		}

		return cnt;
	}

	/**
	 * 把字节数组转换成16进制(每字节成为2位16进制字符)的字符串
	 * 
	 * @param buf
	 * @return
	 */
	public static String bytesToHexString(byte[] buf) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < buf.length; i++) {
			int b = new Byte(buf[i]).intValue() + 128;
			sb.append(String.format("%02x", b));
		}
		return sb.toString();
	}

	/**
	 * 把16进制(每字节成为2位16进制字符)的字符串转换成字节数组<br/>
	 * <b>输入的字符串长度必须是双数,否则最后的单个字符会被丢弃</b>
	 * @param str
	 * @param buf
	 * @return 返回字节数组的长度
	 */
	public static byte[] hexStringToBytes(String str) {
		byte[] buf = new byte[8192];
		byte[] buffer;
		int i = 0;
		for (i = 0; i < str.length() - 1; i += 2) {
			int a = Integer.parseInt(str.substring(i, i + 2), 16);
			byte b = (byte) (a - 128);
			buf[i / 2] = new Integer(b).byteValue();
		}
		buffer = new byte[i / 2];
		for (int j = 0; j < i / 2; j++) {
			buffer[j] = buf[j];
		}

		return buffer;
	}

	/**
	 * 把字符串IP转换成raw IP
	 * 
	 * @param ip
	 * @return
	 */
	public static byte[] parseRawIp(String ip) {
		byte[] rawIp = new byte[4];
		StringTokenizer st = new StringTokenizer(ip, ".");
		int i = 0;
		while (st.hasMoreTokens() && i < 4) {
			rawIp[i] = new Integer(Integer.parseInt(st.nextToken()))
					.byteValue();
			i++;
		}

		return rawIp;
	}

	/**
	 * 把UTF-16LE编码的字符串转换为UTF-8的字符串(主要是把英文、数字转换为单字节)
	 * @param str
	 * @return
	 */
	public static String utf16ToUtf8(String str) {
		try {
			String str2 = new String(str.getBytes("UTF-16"), "UTF-8");
			System.out.println("str2:" + str2);
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < str2.length(); i++) {
				if (str2.codePointAt(i) != '\0' && str2.codePointAt(i)<=255 ) {
					sb.append(str2.charAt(i));
					logger.debug("charAt " + i + "[" + str2.charAt(i)
							+ ","+ str2.codePointAt(i)  +"] append.");
				}
			}
			logger.debug("sb:" + sb.toString());
			return sb.toString();
		} catch (UnsupportedEncodingException ex) {
			ex.printStackTrace();
			return null;
		}
	}

	/**
	 * 把UTF-8编码的字符串转换为UTF-16LE的字符串(只能把英文、数字转换为双字节)
	 * @param str
	 * @return
	 */
	public static String utf8ToUtf16le(String str) {
		StringBuffer sb = new StringBuffer();
		//try {
			for (int i = 0; i < str.codePointCount(0, str.length()); i++) {
				if ( str.codePointAt(i)<=255 ) {
					String c = "00";
					c += Integer.toString(str.codePointAt(i), 16);
					logger.debug("code in UTF-8:"+ c);
					int b = Integer.parseInt(c, 16);
					logger.debug("code in UTF-16:"+ Integer.toString(b, 16));
					sb.appendCodePoint(b);
				}else{
					sb.appendCodePoint(str.codePointAt(i));
					logger.debug("code in UTF-16(No change):"+ Integer.toString(str.codePointAt(i), 16));
				}
			}

			return sb.toString();
		//} catch (UnsupportedEncodingException ex) {
		//	ex.printStackTrace();
		//	return null;
		//}
	}
	
	/**
	 * 把字符串开头、末尾的(双字节)空格去掉
	 * @param str
	 * @return
	 */
	public static StringBuffer utf16Trim(StringBuffer sb){
		//去掉开头的空格
		if(sb == null || sb.length()<1){
			return sb;
		}
		
		while(sb.codePointAt(0) == '\u2000'){
			sb.deleteCharAt(0);
		}
		//去掉末尾的空格
		int i = sb.codePointCount(0, sb.length()-1);
		while(sb.codePointAt(i) == '\u2000' ){
			sb.deleteCharAt(sb.length()-1);
			i--;
		}
		return sb;
	}

	public static void main(String args[]) {
		logger.debug("randamNumbers:[" + Strings.radmonNumbers(6) + "]");
	}
}

⌨️ 快捷键说明

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