728x90
자바는 기본적으로 CamelCase 형태를 사용하고, DB 는 UnderScore 를 사용하므로 두 형태를 변경해야 하는경우가 종종 생긴다. 처음에는 구글링해서 직접 CaseUtil 클래스를 만들어 메서드를 정의해서 사용했다. 물론, 이 방법도 좋지만 직접 작성하기가 싫다면 이미 있는 library 를 사용해도 좋다. 여기서는 'com.google.common.base' 의 CaseFormat 클래스를 사용했다.
1. 클래스 메서드를 직접 정의해서 사용하는 방법
1. UnderScore to CamelCase
UnderScore -> CamelCase 형태로 만들고자 아래처럼 코드를 작성했다.
e.g.used_memory -> usedMemory
public class CaseUtil {
private static final char UNDER_SCORE = '_';
protected boolean shouldConvertNextCharToLower = true;
public static String toCamelCase(String text, boolean shouldConvertNextCharToLower, char delimiter){
StringBuilder builder = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char currentChar = text.charAt(i);
if (currentChar == delimiter) {
shouldConvertNextCharToLower = false;
} else if (shouldConvertNextCharToLower) {
builder.append(Character.toLowerCase(currentChar));
} else {
builder.append(Character.toUpperCase(currentChar));
shouldConvertNextCharToLower = true;
}
}
return builder.toString();
}
public static String toCamelCase(String text){
return toCamelCase(text, true, UNDER_SCORE);
}
}
UnderScore to CamelCase 변환 테스트 :
2. CamelCase to UnderScore
반대의 경우도 메서드를 아래와 같이 작성했다. e.g.usedMemory -> used_memory
public static String toUnderScore(String text) {
StringBuilder builder = new StringBuilder();
builder.append(Character.toLowerCase(text.charAt(0)));
for (int i = 1; i < text.length(); i++) {
char currentChar = text.charAt(i);
if (Character.isLowerCase(currentChar)){
builder.append(currentChar);
} else {
builder.append(UNDER_SCORE);
builder.append(Character.toLowerCase(currentChar));
}
}
return builder.toString();
}
public static String toUnderScoreUpperCase(String text) {
return toUnderScore(text).toUpperCase();
}
CamelCase to UnderScore 변환 테스트:
2. 기존에 정의된 메서드를 가져와서 활용하는 방법
아래 패키지에 있는 CaseFormat enum 에 정의된 메서드를 사용하고자 한다.
package com.google.common.base
먼저, build.gradle 에 implementation 을 추가한다.
implementation("com.google.guava:guava:30.1.1-jre")
그리고 원하는 Format 변환 to 메서드를 적용해서 사용하면 된다.
1. UnderScore to CamelCase
e.g.HELLO_WORLD-> helloWorld
UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "HELLO_WORLD")
2. CamelCase to UnderScore
e.g.helloWorld -> HELLO_WORLD
LOWER_CAMEL.to(UPPER_UNDERSCORE, "helloWorld")
728x90
'JAVA' 카테고리의 다른 글
[JAVA] 스택 / 큐 (0) | 2021.04.06 |
---|---|
[JAVA] 비트 연산자 정리 (0) | 2021.04.06 |