自己写的大小驼峰和下划线互转工具类,使用中有问题的话希望大家可以给我评论反馈一下,我继续改进。
/**
* String工具
*
* @author 随风
*/
public class WordTransformUtil {
/**
* 定义下划线
*/
private static final char UNDERLINE = '_';
public enum Camel{
bigCamel(2,"大驼峰"),
smallCamel(1,"小驼峰");
final Integer type;
final String message;
Camel(Integer type, String message) {
this.type = type;
this.message = message;
}
}
/**
* 驼峰转下划线工具
*/
public static String camelToUnderline(String param) {
if (isNotBlank(param)) {
int len = param.length();
StringBuilder sb = new StringBuilder(len);
if (Character.isUpperCase(param.charAt(0))) {
sb.append(Character.toLowerCase(param.charAt(0)));
} else {
sb.append(param.charAt(0));
}
for (int i = 1; i < len; i++) {
char c = param.charAt(i);
if (Character.isUpperCase(c)) {
sb.append(UNDERLINE);
sb.append(Character.toLowerCase(c));
} else {
sb.append(c);
}
}
return sb.toString();
} else {
return "";
}
}
private static boolean isBlank(CharSequence cs) {
int strLen;
if (cs != null && (strLen = cs.length()) != 0) {
for (int i = 0; i < strLen; ++i) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
} else {
return true;
}
}
private static boolean isNotBlank(CharSequence cs) {
return !isBlank(cs);
}
/**
* 下划线转驼峰工具
*/
public static String underlineToCamel(String param, Camel camel) {
if (isNotBlank(param)) {
int len = param.length();
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
char c = param.charAt(i);
if (c == 95) {
++i;
if (i < len) {
sb.append(Character.toUpperCase(param.charAt(i)));
}
} else {
sb.append(c);
}
}
char firstChar = sb.charAt(0);
if (camel.type == 2) {
if (Character.isLowerCase(firstChar)) {
sb.replace(0, 1, String.valueOf(Character.toUpperCase(firstChar)));
}
} else if (camel.type == 1) {
if (Character.isUpperCase(firstChar)) {
sb.replace(0, 1, String.valueOf(Character.toLowerCase(firstChar)));
}
}
return sb.toString();
} else {
return "";
}
}
/**
* 下划线转驼峰工具,默认小驼峰
*/
public static String underlineToCamel(String param) {
if (isNotBlank(param)) {
int len = param.length();
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
char c = param.charAt(i);
if (c == 95) {
++i;
if (i < len) {
sb.append(Character.toUpperCase(param.charAt(i)));
}
} else {
sb.append(c);
}
}
char firstChar = sb.charAt(0);
if (Character.isUpperCase(firstChar)) {
sb.replace(0, 1, String.valueOf(Character.toLowerCase(firstChar)));
}
return sb.toString();
} else {
return "";
}
}
//首字母转小写
public static String toLowerCaseFirstOne(String s) {
if (Character.isLowerCase(s.charAt(0))) {
return s;
} else {
return Character.toLowerCase(s.charAt(0)) + s.substring(1);
}
}
//首字母转大写
public static String toUpperCaseFirstOne(String s) {
if (Character.isUpperCase(s.charAt(0))) {
return s;
} else {
return Character.toUpperCase(s.charAt(0)) + s.substring(1);
}
}
}