驼峰字符串和指定分割符字符串之间的相互转换
/** * 驼峰转成指定连接符连接的字符串。如:orderStatus -> order_status * * @param sourStr 需要转换的字符串,如:orderStatus * @param charType 1、全小写,2,全大写 * @param connectChar 连接符,如:_ * @return 转换后的字符串,如:order_status */ public String camelToConnect(String sourStr, Integer charType, char connectChar) { if (sourStr == null || "".equals(sourStr.trim())) { return ""; } int len = sourStr.length(); StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char c = sourStr.charAt(i); if (Character.isUpperCase(c)) { sb.append(connectChar); } if (charType == 2) { sb.append(Character.toUpperCase(c)); } else { sb.append(Character.toLowerCase(c)); } } return sb.toString(); } /** * 指定连接符连接的字符串转换成驼峰。如:order_status -> orderStatus * * @param sourStr * @param connectChar 原字符串的连接符。如:_ * @return */ public String connectToCamel(String sourStr, char connectChar) { if (sourStr == null || "".equals(sourStr.trim())) { return ""; } int len = sourStr.length(); StringBuilder sb = new StringBuilder(len); // 转大写标志 Boolean flag = false; for (int i = 0; i < len; i++) { char c = sourStr.charAt(i); // 当前字符为连接符,也就是后面一个字符要变大写,所以跳过,不要它,并将flag=true,下一个遍历的字符进行大写转换 if (c == connectChar) { flag = true; continue; } else { // 说明刚才遍历到了连接符,当前字符转大写 if (flag == true) { sb.append(Character.toUpperCase(sourStr.charAt(i))); flag = false; } else { sb.append(Character.toLowerCase(sourStr.charAt(i))); } } } return sb.toString(); }
测试:
心里有束光,眼里有片海