How to Convert CamelCase to UnderScore & UnderScore to CamelCase

2023. 1. 14. 10:40·JAVA
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
'JAVA' 카테고리의 다른 글
  • [JAVA] 스택 / 큐
  • [JAVA] 비트 연산자 정리
heestory217
heestory217
Done is better than Perfect! 좌충우돌 개발일지💻
    250x250
  • heestory217
    Heello World
    heestory217
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • 컴퓨터일반 (0)
      • WEB (1)
      • JAVA (3)
      • Python (9)
      • C (1)
      • DataBase (17)
        • Oracle (2)
        • MySQL (9)
        • SAP HANA (4)
        • PostgreSQL (0)
      • 디버깅∕오류해결 (14)
      • 코딩테스트 (54)
        • 자료구조∕알고리즘 (3)
      • 정보처리기사 (10)
      • Git∕GitHub (7)
      • 기타 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정처기 실기
    정처기 수제비 데일리 문제
    코딩테스트
    hashmap sort
    Sort a HashMap in Java
    프로그래머스 카카오
    파이썬 포맷팅
    treeset
    Guava library
    HashMap
    treemap
    정처기 수제비 실기문제
    정처기 실기 예상문제
    SAP HANA Studio
    인텔리제이
    leetcode
    정처기 수제비
    IntelliJ
    MySQL
    배열 정렬하기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
heestory217
How to Convert CamelCase to UnderScore & UnderScore to CamelCase
상단으로

티스토리툴바