下划线字符转换为驼峰式字符

将下划线变量转换为驼峰式的字符变量并添加一些附加内容(本案例中的注解), 变量的组成可以是:字母, 数字,下划线"_", 美元符号"$", 这个工具类,没有考虑其转换效率。


其他博客有对转换大写的优化,将字符减去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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值