java,下划线与驼峰命名转换

来源:互联网 发布:网络屏蔽器软件下载 编辑:程序博客网 时间:2024/05/21 08:59
下划线与驼峰命名转换
public class Tool{        private static Pattern linePattern = Pattern.compile("_(\\w)");        /**下划线转驼峰*/        public static String lineToHump(String str){            str = str.toLowerCase();            Matcher matcher = linePattern.matcher(str);            StringBuffer sb = new StringBuffer();            while(matcher.find()){                matcher.appendReplacement(sb, matcher.group(1).toUpperCase());            }            matcher.appendTail(sb);            return sb.toString();        }        /**驼峰转下划线(简单写法,效率低于{@link #humpToLine2(String)})*/        public static String humpToLine(String str){            return str.replaceAll("[A-Z]", "_$0").toLowerCase();        }        private static Pattern humpPattern = Pattern.compile("[A-Z]");        /**驼峰转下划线,效率比上面高*/        public static String humpToLine2(String str){            Matcher matcher = humpPattern.matcher(str);            StringBuffer sb = new StringBuffer();            while(matcher.find()){                matcher.appendReplacement(sb, "_"+matcher.group(0).toLowerCase());            }            matcher.appendTail(sb);            return sb.toString();        }        public static void main(String[] args) {            String lineToHump = lineToHump("f_parent_no_leader");            System.out.println(lineToHump);//fParentNoLeader            System.out.println(humpToLine(lineToHump));//f_parent_no_leader            System.out.println(humpToLine2(lineToHump));//f_parent_no_leader        }    }

不纠结""_"+matcher.group(0).toLowerCase()"的话,humpToLine2效率会比humpToLine高一些,看String#replaceAll方法源码即可。
0 0
原创粉丝点击