package com.mmall.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 需求:1. 将字符串 user_name_abc 转换为 userNameAbc
* 2. 将字符串 userNameAbc 转化为 user_name_abc
* @author Declan
*/
public class Test {
public static void main(String[] args) {
System.out.println((int)'A');
long startTime = System.currentTimeMillis();
String lowCaseStr = "user_name_abc";
String humpCaseStr = "userNameAbc";
for(int i=0; i<10000; i++){
System.out.println(lowCaseStr+" >> "+lowCaseConvert2Hump_1(lowCaseStr));
// System.out.println(lowCaseStr+" >> "+lowCaseConvert2Hump_2(lowCaseStr));
System.out.println(humpCaseStr+" >> "+humpConvert2lowCase_1(humpCaseStr));
// System.out.println(humpCaseStr+" >> "+humpConvert2lowCase_2(humpCaseStr));
}
long endTime = System.currentTimeMillis();
System.out.println("************ 所用时间(ms): "+(endTime-startTime)+"***********");
}
/**
* 方法1
* @param str
* @return
*/
public static String lowCaseConvert2Hump_1(String str){
String[] split = str.split("_");
StringBuilder stringBuilder = new StringBuilder(split[0]);
for (int i=1; i<split.length; i++){
String tmpStr = split[i];
char c = (char)(tmpStr.charAt(0)-32);
tmpStr = c+tmpStr.substring(1);
stringBuilder.append(tmpStr);
}
return stringBuilder.toString();
}
/**
* 方法2 用正则表达式实现 user_name_abc 转换为 userNameAbc
* @param str
* @return
*/
public static String lowCaseConvert2Hump_2(String str){
Pattern pattern = Pattern.compile("_[\\w]");
Matcher matcher = pattern.matcher(str);
while (matcher.find()){
String group = matcher.group();
str = str.replace(group, group.toUpperCase());
}
return str.replaceAll("_", "");
}
/**
* 方法1
* @param str
* @return
*/
public static String humpConvert2lowCase_1(String str){
StringBuilder stringBuilder = new StringBuilder();
char[] chars = str.toCharArray();
for (char c : chars){
// if(c>='A' && ascii<='Z'){
if(Character.isUpperCase(c)){
c = (char)(c +32);
stringBuilder.append("_"+c);
}else{
stringBuilder.append(c);
}
}
return stringBuilder.toString();
}
/**
* 方法2 用正则表达式实现
* @param str
* @return
*/
public static String humpConvert2lowCase_2(String str){
return str.replaceAll("[A-Z]{1}","_$0").toLowerCase();
}
}
经过测试,使用正则表达式的话,需要更长的时间,效率更低一些。