문자열을 다룰 때 일정 자리수를 확보해야 하거나 특정 문자를 자리수만큼 채워야할 때가 있습니다.
이럴 때 사용하기 좋은 메소드를 소개해드리겠습니다.
왼쪽에 채우기
String.format 메소드 사용
String str = "문자열";
// 왼쪽에 공백 채우기
String spaceFillStr = String.format("%10s", str);
System.out.println("spaceFillStr = " + spaceFillStr);
// 왼쪽에 0 채우기
String zeroFillStr = String.format("%10s", str).replace(" ", "0");
System.out.println("zeroFillStr = " + zeroFillStr);
String.format 메소드를 사용하여 10자리의 공간을 확보하고 남은 공간에 공백이나 0을 채웠습니다.
0의 경우에는 먼저 공백으로 채운 다음 replace를 사용하여 공백을 모두 0으로 바꾸는 방식을 사용했습니다.
문자열이 아니라 숫자 타입이면 %010d 형식으로 사용하면 됩니다.
String zeroLeftFillInt = String.format("%010d", 123);
System.out.println("zeroLeftFillInt = " + zeroLeftFillInt);
StringUtils.leftPad() 사용
apache-commons-lang3 라이브러리 추가
먼저 StringUtils 클래스를 사용하기 위해 라이브러리를 추가해야 합니다.
// Maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
// Gradle
dependencies {
implementation 'org.apache.commons:commons-lang3:3.12.0'
}
사용할 StringUtils 클래스는 스프링 라이브러리에 포함된 org.springframework.util.StringUtils 클래스와는 다른 클래스입니다.
그래서 commons-lang3 라이브러리를 따로 추가해야 합니다.
라이브러리를 추가한 후 다음과 같이 사용하면 됩니다.
import org.apache.commons.lang3.StringUtils;
...
// 왼쪽 공백 채우기
String spaceLeftFillStr = StringUtils.leftPad("문자열", 10);
System.out.println("spaceLeftFillStr = " + spaceLeftFillStr);
// 왼쪽 0 채우기
String zeroLeftFillStr = StringUtils.leftPad("문자열", 10, "0");
System.out.println("zeroLeftFillStr = " + zeroLeftFillStr);
오른쪽에 채우기
String.format 메소드 사용
String str = "문자열";
// 오른쪽에 공백 채우기
String spaceRightFillStr = String.format("%-10s", str);
System.out.println("spaceRightFillStr = " + spaceRightFillStr + ".");
// 오른쪽에 0 채우기
String zeroRightFillStr = String.format("%-10s", str).replace(" ", "0");
System.out.println("zeroRightFillStr = " + zeroRightFillStr);
// 오른쪽에 - 채우기
String minusRightFillStr = String.format("%-10s", str).replace(" ", "-");
System.out.println("minusRightFillStr = " + minusRightFillStr);
공백이라 자리수가 잘 안보여서 맨 끝에 점을 찍었습니다.
오른쪽에 공백이나 특정 문자가 채워진 것을 확인할 수 있습니다.
StringUtils.rightPad() 사용
StringUtils.leftPad 메소드처럼 rightPad() 메소드도 존재합니다.
import org.apache.commons.lang3.StringUtils;
...
// 오른쪽 공백 채우기
String spaceRightFillStr = StringUtils.rightPad("문자열", 10);
System.out.println("spaceRightFillStr = " + spaceRightFillStr + ".");
// 오른쪽 0 채우기
String zeroRightFillStr = StringUtils.rightPad("문자열", 10, "0");
System.out.println("zeroRightFillStr = " + zeroRightFillStr);
String.format 메소드를 사용했을 때와 동일한 결과를 확인할 수 있습니다.
읽으면 좋은 글
[Java] String - format 문자열 형식 사용법