将下划线变量转换为驼峰式的字符变量, 变量的组成可以是:字母, 数字,下划线"_", 美元符号"$", 这个工具类,没有考虑其转换效率。
其他博客有对转换大写的优化,将字符减去32刚好获取该字母的大写字母: (char)(要转大写的字符-32); 当变量中有$时,简单的这么做减法可能会出问题。
用的eclipse做的开发, 使用alt+shift+a快捷键启动多行编辑,如果不支持该快捷键,就只能老老实实的搞了, 便于将变量赋值到数组中。
- package com.thinkive;
- public class Underline2Camel {
-
-
- private static final String APPEND_PRE = "@JsonProperty(\"";
-
- private static final String APPEND_SUF = "\")";
-
- private static final String DECORATE = "private ";
-
- 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;