字符串處理工具:
生成隨機字符串
替換字符串
校驗一段字符串是否包含漢字
生成隨機目錄
格式化數字
格式化百分比
判斷是否有小數
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));
}
}