JAVA

How to Convert CamelCase to UnderScore & UnderScore to CamelCase

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 변환 테스트 : 

UnderScore to CamelCase test

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 변환 테스트: 

CamelCase to UnderScore test

 

2. 기존에 정의된 메서드를 가져와서 활용하는 방법

아래 패키지에 있는 CaseFormat enum 에 정의된 메서드를 사용하고자 한다.

package com.google.common.base

com.google.guava

먼저, build.gradle 에 implementation 을 추가한다.

implementation("com.google.guava:guava:30.1.1-jre")

그리고 원하는 Format 변환 to 메서드를 적용해서 사용하면 된다.

CaseFormat

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