工作遇到了一个需求,从 properties
文件中获取配置的字段,然后将获取的字段的首字母转为大写。
可以使用两种方式来实现一下:
- 1、利用 String 和 Character 自身提供的方法来实现:
/**
* 首字母转大写
* @param s
* @return
*/
public static String toUpperFirstOne(String s) {
if (Character.isUpperCase(s.charAt(0))) {
return s;
} else {
return (new StringBuilder())
.append(Character.toUpperCase(s.charAt(0)))
.append(s.substring(1))
.toString();
}
}
- 2、利用 ASCII 码的特性来实现:
/**
* 将字符串的首字母转大写
* @param s
* @return
*/
private static String toUpperFirstCharacter(String s) {
// 利用ascii编码的前移,效率要高于截取字符串进行转换的操作
char[] cs = s.toCharArray();
if (Character.isLowerCase(cs[0])) {
cs[0] -= 32;
return String.valueOf(cs);
}
return s;
}
上面的两种方式都可以实现一个字符串的首字母转大写操作,经过多次测试,第二中方法在绝大多数情况下效率上稍微优于第一种,二者的时间差别大概是为微秒和纳秒级别。
PS:根据上面的代码,同样也可以写出两种对应的将一个字符串首字母转为小写的方法
- 1、利用 String 和 Character 自身提供的方法来实现:
/**
* 首字母转小写
* @param s
* @return
*/
public static String toLowerFirstOne(String s) {
if (Character.isLowerCase(s.charAt(0))) {
return s;
} else {
return (new StringBuilder())
.append(Character.toLowerCase(s.charAt(0)))
.append(s.substring(1))
.toString();
}
}
- 2、利用 ASCII 码的特性来实现
/**
* 将字符串的首字母转小写
* @param s
* @return
*/
private static String toLowerFirstCharacter(String s) {
char[] cs = s.toCharArray();
if (Character.isUpperCase(cs[0])) {
cs[0] += 32;
return String.valueOf(cs);
}
return s;
}
网友评论