比较乱,呵呵!懒得分类了!包括编码格式转换,处理字符串,大写金额处理
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 公用处理类,
*
* @author liugang
*/
public final class Convert {
/**
* 编码格式 ISO --> GBK
*
* @param strCode
* @return
*/
public static String convertIsoToGbk(String strCode) {
try {
if ((strCode == null) || (strCode.equals(""))) {
return "";
}
strCode = strCode.trim();
strCode = new String(strCode.getBytes("ISO-8859-1"), "GBK");
} catch (UnsupportedEncodingException e) {
System.out.println("error--->Convert.convertIsoToGbk:不受支持的字符集格式!");
}
return strCode;
}
/**
* 编码格式 GBK --> ISO
*
* @param strCode
* @return
*/
public static String convertGbkToIso(String strCode) {
try {
if ((strCode == null) || (strCode.equals(""))) {
return "";
}
strCode = strCode.trim();
strCode = new String(strCode.getBytes("GBK"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
System.out.println("error--->Convert.convertGbkToIso:不受支持的字符集格式!");
}
return strCode;
}
/**
* 编码格式 ISO --> UTF8
*
* @param strCode
* @return
*/
public static String convertIsoToUtf8(String strCode) {
try {
if ((strCode == null) || (strCode.equals(""))) {
return "";
}
strCode = strCode.trim();
strCode = new String(strCode.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
System.out.println("error--->Convert.convertIsoToUtf8:不受支持的字符集格式!");
}
return strCode;
}
/**
* 判断list是否为空(null 或是 size=0)
*
* @param list
* @return 空返回true 否则返回false
*/
public static boolean checkIsNull(List<?> list) {
if (list != null && list.size() > 0) {
return false;
}
return true;
}
/**
* 判断set是否为空(null 或是 size=0)
*
* @param set
* @return 空返回true 否则返回false
*/
public static boolean checkIsNull(Set<?> set) {
if (set != null && set.size() > 0) {
return false;
}
return true;
}
/**
* 判断map是否为空(null 或是 size=0)
*
* @param map
* @return 空返回true 否则返回false
*/
public static boolean checkIsNull(Map<?, ?> map) {
if (map != null && map.size() > 0) {
return false;
}
return true;
}
/**
* 处理字符串,去掉空格
*
* @param inStr
* 待处理字符串
* @return 如果null返回”“,否则返回去掉空格的字符串
*/
public static String convertNull(String inStr) {
if (inStr == null) {
return "";
} else {
return inStr.trim();
}
}
/**
* 处理字符串;如果字符串为空返回的默认字符串,否则返回去掉空格的字符串
*
* @param inStr
* 待处理字符串
* @param defaultStr
* 如果为空返回的默认字符串
* @return 如果为空返回的默认字符串,否则返回去掉空格的字符串
*/
public static String convertNull(String inStr, String defaultStr) {
if (inStr == null || "".equals(inStr)) {
return defaultStr;
} else {
return inStr.trim();
}
}
/**
* 处理字符串;根据设定的字符长度对输入的字符串使用默认字符补齐
*
* @param inStr
* 待处理字符串
* @param addStr
* 补齐使用的字符
* @param strLen
* 字符串的最终长度
* @param posFlag
* 标示补齐的字符放到前边还是后边,0_前边,1_后边
* @return 处理完成的字符串
*/
public static String convertNull(String inStr, String addStr, int strLen,
int posFlag) {
String str = "";
if (inStr.endsWith("") || inStr == null) {
return "";
}
while (str.length() < strLen) {
if (posFlag == 0) {
str = addStr + str;
} else {
str = str + addStr;
}
}
return str;
}
/**
* 判断字符是否是数字组成
*
* @param str
* @return 是数字:true,不是:false
*/
public static boolean isNumber(String str) {
try {
@SuppressWarnings("unused")
Double d = Double.parseDouble(str);
} catch (NumberFormatException e) {
return false;
}
return true;
}
/**
* 将数字型货币转换为中文型货币 <br/>
* @param moneyValue
* 字符串形式的金额,小数部分,将多于3位部分舍去,不做四舍五入
* @return
*/
private final static String[] CN_Digits = { "零", "壹", "貳", "叁", "肆", "伍","陆", "柒", "捌", "玖", };
public static String moneyNumToCap(String moneyValue) {
//使用正则表达式,去除前面的零及数字中的逗号
String value = moneyValue.replaceFirst("^0+", "");
value = value.replaceAll(",", "");
//分割小数部分与整数部分
int dot_pos = value.indexOf('.');
String int_value;
String fraction_value;
if (dot_pos == -1) {
int_value = value;
fraction_value = "00";
} else {
int_value = value.substring(0, dot_pos);
fraction_value = value.substring(dot_pos + 1, value.length())
+ "00".substring(0, 2);//也加两个0,便于后面统一处理
}
int len = int_value.length();
if (len>16) return "值过大";
StringBuffer cn_currency = new StringBuffer();
String[] CN_Carry = new String[] { "", "万", "亿", "万" };
//数字分组处理,计数组数
int cnt = len/4+(len%4==0?0:1);
//左边第一组的长度
int partLen = len-(cnt-1)*4;
String partValue=null;
boolean bZero=false;//有过零
String curCN=null;
for(int i =0; i<cnt; i++){
partValue = int_value.substring(0,partLen);
int_value=int_value.substring(partLen);
curCN = Part2CN(partValue,i!=0&&!"零".equals(curCN));
//System.out.println(partValue+":"+curCN);
//若上次为零,这次不为零,则加入零
if(bZero && !"零".equals(curCN)){
cn_currency.append("零");
bZero=false;
}
if("零".equals(curCN))bZero=true;
//若数字不是零,加入中文数字及单位
if(!"零".equals(curCN)){
cn_currency.append(curCN);
cn_currency.append(CN_Carry[cnt-1-i]);
}
//除最左边一组长度不定外,其它长度都为4
partLen=4;
partValue=null;
}
//如果钱数不到元不添加”元“
if(!cn_currency.toString().equals("")){
cn_currency.append("元");
}
//处理小数部分
int fv1 = Integer.parseInt(fraction_value.substring(0,1));
int fv2 = Integer.parseInt(fraction_value.substring(1,2));
if(fv1+fv2==0){
cn_currency.append("整");
}
else{
cn_currency.append(CN_Digits[fv1]).append("角");
cn_currency.append(CN_Digits[fv2]).append("分");
}
return cn_currency.toString();
}
/**
* 将一组数字(不多于四个)转化成中文表示 (moneyNumToCap使用)
* @param partValue 字符串形式的数字
* @param bInsertZero 是否在前面添加零
* @return
*/
private static String Part2CN(String partValue,boolean bInsertZero) {
//使用正则表达式,去除前面的0
partValue = partValue.replaceFirst("^0+", "");
int len = partValue.length();
if (len == 0)
return "零";
StringBuffer sbResult = new StringBuffer();
int digit;
String[] CN_Carry = new String[] { "", "拾", "佰", "仟" };
for (int i = 0; i < len; i++) {
digit = Integer.parseInt(partValue.substring(i, i + 1));
if (digit != 0) {
sbResult.append(CN_Digits[digit]);
sbResult.append(CN_Carry[len - 1 - i]);
} else {
// 若不是最后一位,且下不位不为零,追加零
if (i != len - 1
&& Integer.parseInt(partValue.substring(i + 1, i + 2)) != 0)
sbResult.append("零");
}
}
if(bInsertZero && len!=4)sbResult.insert(0, "零");
return sbResult.toString();
}
}