📄 stringutils.java
字号:
}
}
return strRet;
}
/**
* 格式化字符串,将字符串trim()后返回. 如果字符串为null,则返回长度为零的字符串("")
* @param value 被格式化字符串
* @return 格式化后的字符串
*/
public static String stringTrim(String value){
if(value == null) return "";
return value.trim();
}
/**
* 将一个字符串格式化为给定的长度,过长的话按照给定的长度从字符串左边截取,反之以给定的
* 字符在字符串右边补足空余位
* <br>比如:
* <br>suffixStr("abc",'0',5) 将返回 aaa00
* <br>suffixStr("abc",'0',2) 将返回 ab
* @param source 原始字符串
* @param profix 补足空余位时使用的字符串
* @param length 格式化后字符串长度
* @return 返回格式化后的字符串,异常返回null
*/
public static String suffixStr(String source,char suffix,int length){
String strRet = source;
if(source == null){
return strRet;
}
if(source.length() >= length){
strRet = source.substring(0,length);
}
if(source.length() < length){
for(int i=0;i<length-source.length();i++){
strRet += suffix;
}
}
return strRet;
}
/**
* 根据分割符sp,将str分割成多个字符串,并将它们放入一个ArrayList并返回,其规则是最后的
* 字符串最后add到ArrayList中
* @param str 被分割的字符串
* @param sp 分割符字符串
* @return 封装好的ArrayList
* @author 高虹 : 友情提供
*/
public static ArrayList convertStrToArrayList(String str, String sp) {
ArrayList al = new ArrayList() ;
if(str == null){
return al;
}
String strArr[] = str.split(sp) ;
for (int i = 0 ; i < strArr.length ; i ++) {
al.add(strArr[i]) ;
}
return al ;
}
/**
* 将数字字符串转换为人民币大写
* @param value 金额人民币数字字符串
* @return 转换后的人民币大写字符串
* @author 王德春 : 友情提供
*/
public static String changeToBig(String value)
{
if(null == value || "".equals(value.trim()))
return "零";
//add by Johnson Zhang
int len = value.length();
String strCheck,strArr,strFen,strDW,strNum,strBig,strNow;
double d = 0;
try {
d = Double.parseDouble(value);
} catch(Exception e) {
return "数据"+value+"非法!";
}
strCheck = value+".";
int dot = strCheck.indexOf(".");
if(dot > 12) {
return "数据"+value+"过大,无法处理!";
}
try {
int i = 0;
strBig = "";
strDW = "";
strNum = "";
//long intFen = (long)(d*100); //原来的处理方法
/**
* 增加了对double转换为long时的精度,
* 例如:(long)(208123.42 * 100) = 20812341 解决了该问题
* add 庞学亮
*/
BigDecimal big = new BigDecimal(d);
big = big.multiply(new BigDecimal(100)).setScale(2 , 4);
long intFen = big.longValue();
strFen = String.valueOf(intFen);
int lenIntFen = strFen.length();
while(lenIntFen != 0) {
i++;
switch(i) {
case 1:strDW = "分";break;
case 2:strDW = "角";break;
case 3:strDW = "元";break;
case 4:strDW = "拾";break;
case 5:strDW = "佰";break;
case 6:strDW = "仟";break;
case 7:strDW = "万";break;
case 8:strDW = "拾";break;
case 9:strDW = "佰";break;
case 10:strDW = "仟";break;
case 11:strDW = "亿";break;
case 12:strDW = "拾";break;
case 13:strDW = "佰";break;
case 14:strDW = "仟";break;
}
switch (strFen.charAt(lenIntFen-1)) { //选择数字
case '1':strNum = "壹";break;
case '2':strNum = "贰";break;
case '3':strNum = "叁";break;
case '4':strNum = "肆";break;
case '5':strNum = "伍";break;
case '6':strNum = "陆";break;
case '7':strNum = "柒";break;
case '8':strNum = "捌";break;
case '9':strNum = "玖";break;
case '0':strNum = "零";break;
}
//处理特殊情况
strNow = strBig;
//分为零时的情况
if((i==1) && (strFen.charAt(lenIntFen-1) == '0'))
strBig = "整";
//角为零时的情况
else if((i==2)&&(strFen.charAt(lenIntFen-1)=='0')){ //角分同时为零时的情况
if(!strBig.equals("整"))
strBig = "零"+strBig;
}
//元为零的情况
else if((i==3)&&(strFen.charAt(lenIntFen-1)=='0'))
strBig = "元"+strBig;
//拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
else if((i<7)&&(i>3)&&(strFen.charAt(lenIntFen-1)=='0')&&(!(""+strNow.charAt(0)).equals("零"))&&(!(""+strNow.charAt(0)).equals("元")))
strBig = "零"+strBig;
//拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过
else if((i<7)&&(i>3)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("零")))
{}
//拾-仟中一位为零且其前一位是元且为零的情况时跨过
else if((i<7)&&(i>3)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("元")))
{}
//当万为零时必须补上万字
//modified by Johnson Zhang
else if((i==7)&&(strFen.charAt(lenIntFen-1)=='0'))
strBig ="万"+strBig;
//拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
else if((i<11)&&(i>7)&&(strFen.charAt(lenIntFen-1)=='0')&&(!(""+strNow.charAt(0)).equals("零"))&&(!(""+strNow.charAt(0)).equals("万")))
strBig = "零"+strBig;
//拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过
else if((i<11)&&(i>7)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("万")))
{}
//拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if((i<11)&&(i>7)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("零")))
{}
//万位为零且存在仟位和十万以上时,在万仟间补零
else if((i<11)&&(i>8)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("万"))&&((""+strNow.charAt(2)).equals("仟")))
strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length());
//单独处理亿位
else if(i==11) {
//亿位为零且万全为零存在仟位时,去掉万补为零
if((strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("万"))&&((""+strNow.charAt(2)).equals("仟")))
strBig ="亿"+"零"+strBig.substring(1,strBig.length());
//亿位为零且万全为零不存在仟位时,去掉万
else if((strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("万"))&&((""+strNow.charAt(2)).equals("仟")))
strBig ="亿"+strBig.substring(1,strBig.length());
//亿位不为零且万全为零存在仟位时,去掉万补为零
else if(((""+strNow.charAt(0)).equals("万"))&&((""+strNow.charAt(2)).equals("仟")))
strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length());
//亿位不为零且万全为零不存在仟位时,去掉万
else if(((""+strNow.charAt(0)).equals("万"))&&((""+strNow.charAt(2)).equals("仟")))
strBig = strNum+strDW+strBig.substring(1,strBig.length());
//其他正常情况
else{
if ( ("" + strBig.charAt(0)).equals("万")) {
strBig = strNum + strDW +
strBig.substring(1, strBig.length()) + " ";
} else {
strBig = strNum + strDW + strBig;
}
}
} //拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
else if((i<15)&&(i>11)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("零"))&&(!(""+strNow.charAt(0)).equals("亿")))
strBig = "零"+strBig;
//拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
else if((i<15)&&(i>11)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("亿")))
{}
//拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
else if((i<15)&&(i>11)&&(strFen.charAt(lenIntFen-1)=='0')&&((""+strNow.charAt(0)).equals("零")))
{}
//亿位为零且不存在仟万位和十亿以上时去掉上次写入的零
else if((i<15)&&(i>11)&&(strFen.charAt(lenIntFen-1)!='0')&&((""+strNow.charAt(0)).equals("零"))&&((""+strNow.charAt(1)).equals("亿"))&&(!(""+strNow.charAt(3)).equals("仟")))
strBig = strNum+strDW+strBig.substring(1,strBig.length());
//亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
else if((i<15)&&(i>11)&&(strFen.charAt(lenIntFen-1)!='0')&&((""+strNow.charAt(0)).equals("零"))&&((""+strNow.charAt(1)).equals("亿"))&&((""+strNow.charAt(3)).equals("仟")))
strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length());
else
strBig = strNum+strDW+strBig;
strFen = strFen.substring(0,lenIntFen-1);
lenIntFen--;
}
return strBig;
}
catch(Exception e)
{
return "";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -