关于核心代码StringUtil里首字母大小写的bug

源码:

/**
* 首字母大写
* @param realName
* @return
*/
public static String firstUpperCase(String realName) {
return StringUtils.replaceChars(realName, realName.substring(0, 1),realName.substring(0, 1).toUpperCase());
}

/**
* 首字母小写
* @param realName
* @return
*/
public static String firstLowerCase(String realName) {
return StringUtils.replaceChars(realName, realName.substring(0, 1),realName.substring(0, 1).toLowerCase());
}

在某些情况下格式化会出错.
e.g. CmsController 格式化 出来是 cmscontroller

附上自己写的一段代码....自我觉得可用,但是不保证是最优,处女座的可以略过


/**
* 首字母大写
* @param realName
* @return 非null,则表示已经转换完成
* <br />
* date & time: 2015-4-4 / 下午11:43:19 <br />
* author: <a href="http://chris-rock-f0.iteye.com/">chris</a>
*/
public static String firstUpperCase(String realName) {

Boolean flag = StringUtil.isUpperOrLowerCase(realName.charAt(0));
if (flag != null && !flag) {//是字母,而且是小写字母
char[] cs = realName.toCharArray();
StringBuffer stringBuffer = new StringBuffer();
int i = 0;
for (char c : cs) {
if (i++ == 0) {
char temp = (char) (c - 32);
stringBuffer.append(String.valueOf(temp));
}else {
stringBuffer.append(String.valueOf(c));
}
}

return stringBuffer.toString();

}else if(flag != null && flag){//是字母,而且也是大写字母
return realName;
}else {
return null;
}
}

/**
* 首字母小写
* @param realName
* @return 非null,则表示已经转换完成
* <br />
* date & time: 2015-4-4 / 下午11:44:36 <br />
* author: <a href="http://chris-rock-f0.iteye.com/">chris</a>
*/
public static String firstLowerCase(String realName) {
Boolean flag = StringUtil.isUpperOrLowerCase(realName.charAt(0));
if (flag != null && flag) {//是字母,而且是大写字母
char[] cs = realName.toCharArray();
StringBuffer stringBuffer = new StringBuffer();
int i = 0;
for (char c : cs) {
if (i++ == 0) {
char temp = (char) (c + 32);
stringBuffer.append(String.valueOf(temp));
}else {
stringBuffer.append(String.valueOf(c));
}
}

return stringBuffer.toString();

}else if(flag != null && !flag){//是字母,而且也是小写字母
return realName;
}else {
return null;
}
}

/**
* 是大写还是小写字母
* @param c 字符
* @return <br />
* <ol>
* <li>true: 大写</li>
* <li>false: 小写 </li>
* <li>null: 不是字母</li>
* </ol>
* <br />
* date & time: 2015-4-4 / 下午11:27:24 <br />
* author: <a href="http://chris-rock-f0.iteye.com/">chris</a>
*/
public static Boolean isUpperOrLowerCase(char c){

int cint = c - 0;

if (cint <= 90 && cint >= 65) {//大写字母
return true;
}else if (cint <= 122 && cint >= 97) {//小写字母
return false;
}else {
return null;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值