Java字符串轉(zhuǎn)駝峰格式的方法
一、場(chǎng)景描述
在開發(fā)場(chǎng)景中,我們會(huì)遇到一些涉及字符串的轉(zhuǎn)化。例如:數(shù)據(jù)庫字段的名稱叫TYPE_NAME,但是有時(shí)候我們需要將其轉(zhuǎn)化為typeName。或者將typeName的駝峰命名方式轉(zhuǎn)化為TYPE_NAME,這時(shí)候就需要進(jìn)行轉(zhuǎn)化。因此,在這里提供了個(gè)工具類。接下來將進(jìn)行演示。
二、代碼示例
1、下劃線大寫方式命名的字符串轉(zhuǎn)換為駝峰式
示例:STUDENT_NAME轉(zhuǎn)為studentName
/**
* 將下劃線大寫方式命名的字符串轉(zhuǎn)換為駝峰式。如果轉(zhuǎn)換前的下劃線大寫方式命名的字符串為空,則返回空字符串
*
* @param name 轉(zhuǎn)換前的下劃線大寫方式命名的字符串
* @return 轉(zhuǎn)換后的駝峰式命名的字符串
*/
public static String convertToCamelCase(String name) {
StringBuilder result = new StringBuilder();
// 快速檢查
if (name == null || name.isEmpty()) {
// 沒必要轉(zhuǎn)換
return "";
} else if (!name.contains("_")) {
// 不含下劃線,僅將首字母大寫
return name.toLowerCase();
}
// 用下劃線將原始字符串分割
String[] camels = name.split("_");
for (String camel : camels) {
// 跳過原始字符串中開頭、結(jié)尾的下?lián)Q線或雙重下劃線
if (camel.isEmpty()) {
continue;
}
// 首字母大寫
result.append(camel.substring(0, 1).toUpperCase());
result.append(camel.substring(1).toLowerCase());
}
StringBuilder ret = new StringBuilder(result.substring(0, 1).toLowerCase());
ret.append(result.substring(1, result.toString().length()));
return ret.toString();
}2、駝峰式命名的字符串轉(zhuǎn)換為下劃線大寫的方式
示例:studentName轉(zhuǎn)為STUDENT_NAME
/**
* 駝峰命名的字符串轉(zhuǎn)為下劃線大寫的方式
* @param name
* @return
*/
public static String humpToUnderline(String name) {
StringBuilder result = new StringBuilder();
if (name != null && name.length() > 0) {
// 將第一個(gè)字符處理成大寫
result.append(name.substring(0, 1).toUpperCase());
// 循環(huán)處理其余字符
for (int i = 1; i < name.length(); i++) {
String s = name.substring(i, i + 1);
// 在大寫字母前添加下劃線
if (s.equals(s.toUpperCase()) && !Character.isDigit(s.charAt(0))) {
result.append("_");
}
// 其他字符直接轉(zhuǎn)成大寫
result.append(s.toUpperCase());
}
}
return result.toString();
}3、完整代碼
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class MyTest {
public static void main(String[] args) throws Exception {
System.out.println(humpToUnderline("studentName"));
System.out.println(convertToCamelCase("STUDENT_AGE"));
}
/**
* 駝峰命名的字符串轉(zhuǎn)為下劃線大寫的方式
* @param name
* @return
*/
public static String humpToUnderline(String name) {
StringBuilder result = new StringBuilder();
if (name != null && name.length() > 0) {
// 將第一個(gè)字符處理成大寫
result.append(name.substring(0, 1).toUpperCase());
// 循環(huán)處理其余字符
for (int i = 1; i < name.length(); i++) {
String s = name.substring(i, i + 1);
// 在大寫字母前添加下劃線
if (s.equals(s.toUpperCase()) && !Character.isDigit(s.charAt(0))) {
result.append("_");
}
// 其他字符直接轉(zhuǎn)成大寫
result.append(s.toUpperCase());
}
}
return result.toString();
}
/**
* 將下劃線大寫方式命名的字符串轉(zhuǎn)換為駝峰式。如果轉(zhuǎn)換前的下劃線大寫方式命名的字符串為空,則返回空字符串
*
* @param name 轉(zhuǎn)換前的下劃線大寫方式命名的字符串
* @return 轉(zhuǎn)換后的駝峰式命名的字符串
*/
public static String convertToCamelCase(String name) {
StringBuilder result = new StringBuilder();
// 快速檢查
if (name == null || name.isEmpty()) {
// 沒必要轉(zhuǎn)換
return "";
} else if (!name.contains("_")) {
// 不含下劃線,僅將首字母大寫
return name.toLowerCase();
}
// 用下劃線將原始字符串分割
String[] camels = name.split("_");
for (String camel : camels) {
// 跳過原始字符串中開頭、結(jié)尾的下?lián)Q線或雙重下劃線
if (camel.isEmpty()) {
continue;
}
// 首字母大寫
result.append(camel.substring(0, 1).toUpperCase());
result.append(camel.substring(1).toLowerCase());
}
StringBuilder ret = new StringBuilder(result.substring(0, 1).toLowerCase());
ret.append(result.substring(1, result.toString().length()));
return ret.toString();
}
}
測(cè)試:

到此這篇關(guān)于Java字符串轉(zhuǎn)駝峰格式的方法的文章就介紹到這了,更多相關(guān)Java字符串轉(zhuǎn)駝峰格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入Ajax代理的Java Servlet的實(shí)現(xiàn)詳解
本篇文章是對(duì)Ajax代理的Java Servlet的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
SpringBoot實(shí)現(xiàn)緩存預(yù)熱的幾種常用方案
緩存預(yù)熱是指在 Spring Boot 項(xiàng)目啟動(dòng)時(shí),預(yù)先將數(shù)據(jù)加載到緩存系統(tǒng)(如 Redis)中的一種機(jī)制,本文給大家介紹了SpringBoot實(shí)現(xiàn)緩存預(yù)熱的幾種常用方案,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-02-02
Spring框架的環(huán)境搭建和測(cè)試實(shí)現(xiàn)
這篇文章主要介紹了Spring框架的環(huán)境搭建和測(cè)試實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)
這篇文章主要為大家介紹了使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
使用SpringBoot與Thrift實(shí)現(xiàn)RPC通信的方式詳解
在微服務(wù)架構(gòu)的世界里,服務(wù)間的通信機(jī)制選擇成為了關(guān)鍵決策之一,RPC因其簡(jiǎn)潔、高效的特點(diǎn)備受青睞,本文將詳細(xì)探討如何利用Spring?Boot和Thrift框架構(gòu)建RPC通信,讓讀者理解其內(nèi)在原理及實(shí)現(xiàn)方式,需要的朋友可以參考下2023-10-10
SpringBoot統(tǒng)一響應(yīng)和統(tǒng)一異常處理詳解
在開發(fā)Spring Boot應(yīng)用時(shí),處理響應(yīng)結(jié)果和異常的方式對(duì)項(xiàng)目的可維護(hù)性、可擴(kuò)展性和團(tuán)隊(duì)協(xié)作有著至關(guān)重要的影響,統(tǒng)一結(jié)果返回和統(tǒng)一異常處理是提升項(xiàng)目質(zhì)量的關(guān)鍵策略之一,所以本文給大家詳細(xì)介紹了SpringBoot統(tǒng)一響應(yīng)和統(tǒng)一異常處理,需要的朋友可以參考下2024-08-08

