【原創】字符串工具類--駝峰法與下划線法互轉


在實際項目開發中,會碰到這樣的問題,數據庫表結構設計好了,可實體類還沒相應地弄出來。實體類的屬性命名方法一般是駝峰法,而數據庫中的表字段命名方法用的是下划線法。如果表的字段非常多,我們根據設計好的數據庫字段再手動敲寫一遍駝峰法的屬性,這有點費時了。如何迅速地把數據庫中的表字段變成我們所需要的駝峰式的屬性呢?

解決方法有二,一是通過文本編輯工具,如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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM