zoukankan      html  css  js  c++  java
  • 【原创】字符串工具类--驼峰法与下划线法互转

    在实际项目开发中,会碰到这样的问题,数据库表结构设计好了,可实体类还没相应地弄出来。实体类的属性命名方法一般是驼峰法,而数据库中的表字段命名方法用的是下划线法。如果表的字段非常多,我们根据设计好的数据库字段再手动敲写一遍驼峰法的属性,这有点费时了。如何迅速地把数据库中的表字段变成我们所需要的驼峰式的属性呢?

    解决方法有二,一是通过文本编辑工具,如EditPlus,Notepad++等,利用它们携带的正则替换功能来迅速实现;二是通过自己编写工具类来实现。至于第一种方法操作技巧,不在这边赘述。第二种方法如下:

    以下是自己编写的工具类的代码:

    package day0704;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 驼峰法-下划线互转
     * @author cshaper
     * @since 2015.07.04
     * @version 1.0.0
     */
    public class Underline2Camel {
        
        /**
         * 下划线转驼峰法
         * @param line 源字符串
         * @param smallCamel 大小驼峰,是否为小驼峰
         * @return 转换后的字符串
         */
        public static String underline2Camel(String line,boolean smallCamel){
            if(line==null||"".equals(line)){
                return "";
            }
            StringBuffer sb=new StringBuffer();
            Pattern pattern=Pattern.compile("([A-Za-z\d]+)(_)?");
            Matcher matcher=pattern.matcher(line);
            while(matcher.find()){
                String word=matcher.group();
                sb.append(smallCamel&&matcher.start()==0?Character.toLowerCase(word.charAt(0)):Character.toUpperCase(word.charAt(0)));
                int index=word.lastIndexOf('_');
                if(index>0){
                    sb.append(word.substring(1, index).toLowerCase());
                }else{
                    sb.append(word.substring(1).toLowerCase());
                }
            }
            return sb.toString();
        }
        /**
         * 驼峰法转下划线
         * @param line 源字符串
         * @return 转换后的字符串
         */
        public static String camel2Underline(String line){
            if(line==null||"".equals(line)){
                return "";
            }
            line=String.valueOf(line.charAt(0)).toUpperCase().concat(line.substring(1));
            StringBuffer sb=new StringBuffer();
            Pattern pattern=Pattern.compile("[A-Z]([a-z\d]+)?");
            Matcher matcher=pattern.matcher(line);
            while(matcher.find()){
                String word=matcher.group();
                sb.append(word.toUpperCase());
                sb.append(matcher.end()==line.length()?"":"_");
            }
            return sb.toString();
        }
        public static void main(String[] args) {
            String line="I_HAVE_AN_IPANG3_PIG";
            String camel=underline2Camel(line,true);
            System.out.println(camel);
            System.out.println(camel2Underline(camel));
        }
    }

    运行结果如下:

    iHaveAnIpang3Pig
    I_HAVE_AN_IPANG3_PIG

    从娃抓起学抓娃
  • 相关阅读:
    docker学习笔记1-- 用Toolbox安装Docker--介绍Docker Machine
    IDEA中文出现乱码解决
    hadoop本地运行与集群运行
    关于IDEA导出项目jar包/runnable jar
    IDEA 添加jar包的三种方式(重点:new uer Libraries)
    windows下客户端开发hdf--环境搭建
    junit在idea中的使用(1)--理论篇
    word的"bug"
    第4章 控制执行流程
    第3章 操作符
  • 原文地址:https://www.cnblogs.com/javasharp/p/4622413.html
Copyright © 2011-2022 走看看