// 大小写ASCII码固定差距
static int gap = 'a'-'A';
public static void main(String[] args) {
String str = "person_first_name";
String result = parseStrToCammeCase(str);
System.out.println(result);
System.out.println(parseCameCaseToStr(result));
}
private static String parseStrToCammeCase(String str) {
StringBuilder sb = new StringBuilder();
boolean needToUpperCase = false;
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if(needToUpperCase){
if('a'<ch && ch<'z'){
char temp = (char)(ch-gap);
sb.append(temp);
}
needToUpperCase = false;
continue;
}
if(ch=='_'){
needToUpperCase = true;
}else {
sb.append(ch);
}
}
return sb.toString();
}
private static String parseCameCaseToStr(String str){
StringBuilder sb = new StringBuilder();
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if('A'<=ch && ch<='Z'){
char temp = (char)(ch+gap);
sb.append("_"+temp);
}else {
sb.append(ch);
}
}
return sb.toString();
}
匈牙利命名和驼峰命名相互转换java
于 2022-02-14 10:34:20 首次发布