字符串處理工具

字符串處理工具:

 

生成隨機字符串

替換字符串

校驗一段字符串是否包含漢字

生成隨機目錄

格式化數字

格式化百分比

判斷是否有小數

import java.io.File;
import java.text.DecimalFormat;
import java.util.Random;

public class StringUtil {
	private static Object initLock = new Object();

	private static Random randGen = null;

	private static char[] numbersAndLetters = null;

	/**
	 * 生成隨機字符串
	 * 
	 * @param length 長度
	 * @return String 隨機字符串
	 */
	public static final String randomNumString(int length) {
		if (length < 1) {
			return null;
		}
		// 初始化隨機數字生成器
		if (randGen == null) {
			synchronized (initLock) {
				if (randGen == null) {
					randGen = new Random();
					// 初始化數字、字母數組
					numbersAndLetters = ("0123456789").toCharArray();
				}
			}
		}

		// 創建字符緩存數組裝入字母和數字
		char[] randBuffer = new char[length];
		for (int i = 0; i < randBuffer.length; i++) {
			randBuffer[i] = numbersAndLetters[randGen.nextInt(9)];
		}
		return new String(randBuffer);
	}

	/**
	 * 替換字符串
	 * 
	 * @param line String 輸入串
	 * @param oldString String 被替換的串
	 * @param newString String 要替換的串
	 * @return 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 = i;
			while ((i = line.indexOf(oldString, i)) > 0) {
				buf.append(line2, j, i - j).append(newString2);
				i += oLength;
				j = i;
			}
			buf.append(line2, j, line2.length - j);
			return buf.toString();
		}
		return line;
	}

	/**
	 * 校驗一段字符串是否包含漢字
	 * 
	 * @param str String
	 * @return boolean
	 */
	public static boolean isGB2312(String str) {
		char[] chars = str.toCharArray();
		boolean isGB2312 = false;

		for (int i = 0; i < chars.length; i++) {
			byte[] bytes = ("" + chars[i]).getBytes();
			if (bytes.length == 2) {
				int[] ints = new int[2];
				ints[0] = bytes[0] & 0xff;
				ints[1] = bytes[1] & 0xff;
				if (ints[0] >= 0x81 && ints[0] <= 0xFE && ints[1] >= 0x40 && ints[1] <= 0xFE) {
					isGB2312 = true;
					break;
				}
			}
		}
		return isGB2312;
	}

	/**
	 * 生成隨機目錄
	 * 
	 * @param root
	 * @return
	 */
	public static String createDir(String root) {
		String path = randomNumString(4);
		String slash = File.separator;
		String first = path.substring(0, 2);
		String second = path.substring(2, 4);
		File dir = new File(root + slash + first);
		if (!dir.isDirectory())
			dir.mkdir();
		dir = new File(root + slash + first + slash + second);
		if (!dir.isDirectory())
			dir.mkdir();
		return first + slash + second + slash;
	}
	/**
	 * 格式化數字
	 * 
	 * @param number 數字
	 * @param pattern 格式
	 * @return
	 */
	public static String getFormatNumber(double number, String pattern) {
		DecimalFormat df = new DecimalFormat(pattern);
		return df.format(number);
	}

	/**
	 * 格式化金額數字,小數位四捨五入(並返回以逗號分隔的字符串)
	 * 
	 * @param number double 數字
	 * @param digit int 小數位
	 * @return String
	 */
	public static String getFormatCurrency(double number, int digit) {
		String pattern = "#,##0";
		if (digit > 0) {
			pattern += ".";
			for (int i = 0; i < digit; i++) {
				pattern += "0";
			}
		}
		return getFormatNumber(number, pattern);
	}

	/**
	 * 格式化金額數字,小數位四捨五入(並返回以逗號分隔的字符串,保留2位數)
	 * 
	 * @param number
	 * @param digit
	 * @return
	 */
	public static String getFormatCurrency(double number) {
		return getFormatCurrency(number, 2);
	}
	
	/**
	 * 格式化金額數字,小數位四捨五入(不帶逗號分隔的字符串)
	 * 
	 * @param number double 數字
	 * @param digit int 小數位
	 * @return String
	 */
	public static String getFormatCurrencyNumber(double number, int digit) {
		String pattern = "###0";
		if (digit > 0) {
			pattern += ".";
			for (int i = 0; i < digit; i++) {
				pattern += "0";
			}
		}
		return getFormatNumber(number, pattern);
	}

	/**
	 * 格式化金額數字,小數位四捨五入(不帶逗號分隔的字符串,保留2位數)
	 * 
	 * @param number
	 * @param digit
	 * @return
	 */
	public static String getFormatCurrencyNumber(double number) {
		return getFormatCurrencyNumber(number, 2);
	}

	/**
	 * 格式化金額數字由pattern 得到所需要的格式
	 * 
	 * @param number
	 * @param digit
	 * @param pattern
	 * @return
	 */
	public static String getFormatCurrency(double number, String pattern) {
		return getFormatNumber(number, pattern);
	}

	/**
	 * 格式化百分比(保留小數後2位)
	 * 
	 * @param number double 數字
	 * @return
	 */
	public static String getFormatPercent(double number) {
		return getFormatPercent(number, 2);
	}

	/**
	 * 格式化百分比
	 * 
	 * @param number double 數字
	 * @param digit int 小數位
	 * @return
	 */
	public static String getFormatPercent(double number, int digit) {
		String pattern = "0";
		if (digit > 0) {
			pattern += ".";
			for (int i = 0; i < digit; i++) {
				pattern += "0";
			}
		}
		pattern += "%";
		return getFormatNumber(number, pattern);
	}

	/**
	 * 格式化百分比(不帶%)
	 * 
	 * @param number
	 * @param digit
	 * @return
	 */
	public static String getFormatPercentNumber(double number, int digit) {
		String pattern = "###0";
		if (digit > 0) {
			pattern += ".";
			for (int i = 0; i < digit; i++) {
				pattern += "0";
			}
		}
		return getFormatNumber(number * 100d, pattern);
	}

	/**
	 * 格式化百分比(不帶%)
	 * 
	 * @param number
	 * @return
	 */
	public static String getFormatPercentNumber(double number) {
		return getFormatPercentNumber(number, 2);
	}

	/**
	 * 判斷是否有小數
	 * 
	 * @param num
	 * @return
	 */
	public static boolean hasDigitNum(double num) {
		return num % 1.0 != 0.0;
	}	
	public static String getSize(long size){
		String ret = String.valueOf(size)+"B";
		if(size>1048576){//MB
			ret = String.valueOf(getFormatCurrency((double)size/1048576))+"M";
		}else if(size>1024){//KB
			ret = String.valueOf(getFormatCurrency((double)size/1024))+"K";
		}
		return ret;
	}
	public static void main(String[] args) {
		long d = 3222;
//		System.out.println(getFormatCurrency(d, 2));
//		System.out.println(hasDigitNum(d));
//
//		System.out.println(getFormatPercent(0.50426, 2));
//		System.out.println(getFormatPercent(0.501));
//		System.out.println(getFormatPercentNumber(0.50));
//		
//		System.out.println(getFormatCurrency(d));
//		System.out.println(getFormatCurrencyNumber(d));
		
		System.out.println(getSize(d));
	}
}


 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章