Java下變量大小寫駝峰、大小寫下劃線、大小寫連線轉(zhuǎn)換
寫在前面
有時(shí)候需要處理對(duì)象屬性的getter、setter方法,或者將屬性與數(shù)據(jù)表字段進(jìn)行相互轉(zhuǎn)換,這時(shí)候就需要用到將小寫駝峰轉(zhuǎn)換為小寫下劃線方式,當(dāng)然我們可以自己手?jǐn)]一段代碼來實(shí)現(xiàn),但Google的大神們,已經(jīng)給我們提供了一個(gè)現(xiàn)成的開發(fā)包,也就是Google guava包。直接拿來主義吧!
引入guava依賴包
這個(gè)非常簡單,只需要在工程的pom.xml中引入依賴的坐標(biāo)即可。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>
可以做什么
變量的一些轉(zhuǎn)換處理,只需要用到博大精深的guava包中的一個(gè)枚舉類CaseFormat.class??梢钥吹皆撁杜e類有5個(gè)枚舉變量。

枚舉就是一個(gè)單例,我們可以直接使用枚舉變量的方法,因?yàn)橐呀?jīng)是一個(gè)單例對(duì)象了嘛!如果你還不了解單例,那這里簡單解釋一下,單例就是在一個(gè)java進(jìn)程(也就是當(dāng)前工程的JVM中)只存在唯一一個(gè)對(duì)象,枚舉據(jù)說是最簡單的單例實(shí)現(xiàn)方式了。
那這幾個(gè)枚舉常量分別代表什么意思呢?
其實(shí)代碼的注釋里已經(jīng)解釋的很清楚了,不愧為大神之作啊!
以CaseFormat.LOWER_HYPHEN為例,注釋如下:
/** Hyphenated variable naming convention, e.g., "lower-hyphen". */
代表連字符的變量命名規(guī)范,例如user-name,user-age等。
為了減少大家的閱讀源碼的工作量,這里把5個(gè)枚舉及意義都拿出來說一下。
| 枚舉變量 | 說明 |
|---|---|
| CaseFormat.LOWER_HYPHEN | 連字符的變量命名規(guī)范,形式lower-hyphen |
| CaseFormat.LOWER_UNDERSCORE | C++變量命名規(guī)范,形式lower_underscore |
| CaseFormat.LOWER_CAMEL | Java變量命名規(guī)范,形式lowerCamel |
| CaseFormat.UPPER_CAMEL | Java和C++類名命名規(guī)范,形式UpperCamel |
| CaseFormat.UPPER_UNDERSCORE | Java和C++常量命名規(guī)范,形式UPPER_UNDERSCORE |
一共有5個(gè)枚舉變量,通過排列組合知識(shí),可以知道,我們可以進(jìn)行變量轉(zhuǎn)換的形式總共有5*4=20種。
怎么做變量轉(zhuǎn)換
下面通過幾個(gè)典型的例子,演示怎么將一種變量命名規(guī)范轉(zhuǎn)換為另一種。
package com.chan.test;
import com.google.common.base.CaseFormat;
public class GuavaTest {
public static void main(String[] args) {
// 變量小寫連接線轉(zhuǎn)小寫駝峰
System.out.println(CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, "user-name"));//userName
// 變量小寫連接線轉(zhuǎn)小寫下劃線
System.out.println(CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_UNDERSCORE, "user-name"));//user_name
// 變量小寫下劃線轉(zhuǎn)小寫駝峰
System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "user_name"));//userName
// 變量下劃線轉(zhuǎn)大寫駝峰
System.out.println(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "user_name"));//UserName
// 變量小寫駝峰轉(zhuǎn)大寫駝峰
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, "userName"));//UserName
// 變量小寫駝峰轉(zhuǎn)小寫下劃線
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "userName"));//user_name
// 變量小寫駝峰轉(zhuǎn)小寫下劃線
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "UserName"));//user_name
// 變量小寫駝峰轉(zhuǎn)小寫連接線
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "userName"));//user-name
}
}
到此這篇關(guān)于Java下變量大小寫駝峰、大小寫下劃線、大小寫連線轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Java 大小寫駝峰、大小寫下劃線、大小寫連線轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring-boot項(xiàng)目啟動(dòng)遲緩異常排查解決記錄
這篇文章主要為大家介紹了spring-boot項(xiàng)目啟動(dòng)遲緩異常排查解決記錄,突然在本地啟動(dòng)不起來了,表象特征就是在本地IDEA上運(yùn)行時(shí),進(jìn)程卡住也不退出,應(yīng)用啟動(dòng)時(shí)加載相關(guān)組件的日志也不輸出2022-02-02
關(guān)于文件上傳MultipartBody的使用方法
這篇文章主要介紹了關(guān)于文件上傳MultipartBody的使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
SpringBoot如何通過Feign調(diào)用傳遞Header中參數(shù)
這篇文章主要介紹了SpringBoot通過Feign調(diào)用傳遞Header中參數(shù),本文給大家分享兩種解決方案給大家詳細(xì)講解,需要的朋友可以參考下2023-04-04
基于Java的MathML轉(zhuǎn)圖片的方法(示例代碼)
最近接到一個(gè)新需求mathML轉(zhuǎn)圖片怎么實(shí)現(xiàn)呢?剛開始還真是蒙圈了,不知道怎么實(shí)現(xiàn),今天小編記錄一種基于Java的MathML轉(zhuǎn)圖片的方法,感興趣的朋友一起看看吧2021-06-06
Java8學(xué)習(xí)教程之lambda表達(dá)式語法介紹
眾所周知lambda表達(dá)式是JAVA8中提供的一種新的特性,它支持Java也能進(jìn)行簡單的“函數(shù)式編程”。 下面這篇文章主要給大家介紹了關(guān)于Java8學(xué)習(xí)教程之lambda表達(dá)式語法的相關(guān)資料,需要的朋友可以參考下。2017-09-09
java Quartz定時(shí)器任務(wù)與Spring task定時(shí)的幾種實(shí)現(xiàn)方法
本篇文章主要介紹了java Quartz定時(shí)器任務(wù)與Spring task定時(shí)的幾種實(shí)現(xiàn)方法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
Java Socket設(shè)置timeout的幾種常用方式說明
這篇文章主要介紹了Java Socket設(shè)置timeout的幾種常用方式說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Java基于SpringBoot和tk.mybatis實(shí)現(xiàn)事務(wù)讀寫分離代碼實(shí)例
這篇文章主要介紹了Java基于SpringBoot和tk.mybatis實(shí)現(xiàn)事務(wù)讀寫分離代碼實(shí)例,讀寫分離,基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作,而從數(shù)據(jù)庫處理SELECT查詢操作,數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫,需要的朋友可以參考下2023-10-10

