将下划线变量转换为驼峰式的字符变量并添加一些附加内容(本案例中的注解), 变量的组成可以是:字母, 数字,下划线"_", 美元符号"$", 这个工具类,没有考虑其转换效率。
其他博客有对转换大写的优化,将字符减去32刚好获取该字母的大写字母: (char)(要转大写的字符-32); 当变量中有$时,简单的这么做减法可能会出问题。
用的eclipse做的开发, 使用alt+shift+a快捷键启动多行编辑,如果不支持该快捷键,就只能老老实实的搞了, 便于将变量赋值到数组中。
package com.thinkive;
/**
* 描述: 下划线转驼峰
* 作者: changez@thinkive.com
* 版本: 1.0
* 创建时间: 2016年11月21日 下午7:55:16
*/
public class Underline2Camel {
/**拼接后的前缀*/
private static final String APPEND_PRE = "@JsonProperty(\"";
/**拼接后的后缀*/
private static final String APPEND_SUF = "\")";
/**变量的修饰符: public, private等*/
private static final String DECORATE = "private ";
/**变量的类型 String, int*/
private static final String VAR_TYPE = "String ";
/**单词间的分隔符*/
private static final String SPLIT_CHAR = "_";
/**分号*/
private static final String SEMICOLON = ";";
/**是否显示拼接的内容*/
private static final boolean isShowAppend = true;
public static void main(String[] args) {
StringBuilder builder = new StringBuilder();
for (String original : sources) {
original = original.trim();
String[] parts = original.split(SPLIT_CHAR);
if(isShowAppend) {
// 如果该变量没有指定的分隔符, 则原样输出。
if(parts.length == 0) {
System.out.println(APPEND_PRE+original+APPEND_SUF);
System.out.println(DECORATE+VAR_TYPE+original+SEMICOLON);
}else {
builder.append(APPEND_PRE+original+APPEND_SUF+System.getProperty("line.separator"));
printVar(builder, parts);
}
}else {
if(parts.length == 0) {
System.out.println(DECORATE+VAR_TYPE+original+SEMICOLON);
}else {
printVar(builder, parts);
}
}
builder.setLength(0);
}
}
/**
* 打印转换后的变量
*/
private static StringBuilder printVar(StringBuilder builder, String[] parts) {
builder.append(DECORATE+VAR_TYPE);
builder.append(parts[0]);
for (int i = 1; i < parts.length; i++) {
String pill = parts[i];
builder.append((pill.charAt(0)+"").toUpperCase()+pill.substring(1));
}
builder.append(SEMICOLON);
System.out.println(builder.toString());
return builder;
}
/**要转换的字符*/
private static String[] sources = {
"id_kind ",
"id_no ",
"birthday ",
"book_type "
};
}
执行结果:(将变量修改为: isShowAppend=false, 则只输出变量 )
@JsonProperty("id_kind")
private String idKind;
@JsonProperty("id_no")
private String idNo;
@JsonProperty("birthday")
private String birthday;
@JsonProperty("book_type")
private String bookType;