字符串处理工具

字符串处理工具:

 

生成随机字符串

替换字符串

校验一段字符串是否包含汉字

生成随机目录

格式化数字

格式化百分比

判断是否有小数

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


 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值