1. 개요

이 짧은 사용방법(예제)에서는 Java 에서 문자열 을 채우는 방법을 알아 봅니다 . 우리는 주로 왼쪽 패드에 초점을 맞출 것입니다. 즉, 원하는 길이에 도달 할 때까지 선행 공백이나 0을 추가합니다.

오른쪽으로 채워진 문자열에 대한 접근 방식 은 매우 유사하므로 차이점 만 지적하겠습니다.

2. 사용자 지정 메서드를 사용 하여 문자열 채우기

Java String 클래스는 패딩을위한 편리한 방법을 제공하지 않으므로 자체적으로 여러 메서드를 만들어 보겠습니다. 하지만 먼저 몇 가지 기대치를 설정해 보겠습니다.

assertEquals("    123456", padLeftZeros("123456", 10));
assertEquals("0000123456", padLeftZeros("123456", 10));

2.1. StringBuilder 사용

StringBuilder 및 일부 절차 논리를 사용 하여이를 달성 할 수 있습니다  .

public String padLeftZeros(String inputString, int length) {
    if (inputString.length() >= length) {
        return inputString;
    }
    StringBuilder sb = new StringBuilder();
    while (sb.length() < length - inputString.length()) {
        sb.append('0');
    }
    sb.append(inputString);

    return sb.toString();
}

여기에서 원본 텍스트의 길이가 원하는 길이보다 크거나 같으면 변경되지 않은 버전을 반환합니다. 그렇지 않으면 공백으로 시작하여 원래 문자열을 추가하여 문자열  을 만듭니다 .

물론 다른 문자로 채우려면 0 대신 사용할 수 있습니다 .

마찬가지로 오른쪽 채우기를 원하면 대신 new  StringBuilder (inputString) 를 수행  한 다음 끝에 공백을 추가하면됩니다.

2.2. 하위 문자열 사용

왼쪽 패딩을 할 수있는 또 다른 방법은 것입니다 크리에이트 문자열 에만 패드 문자가 포함 된 다음 사용 원하는 길이 문자열 () 메소드를 :

StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
    sb.append(' ');
}

return sb.substring(inputString.length()) + inputString;

2.3. String.format 사용

마지막으로 Java 5부터는 String .format () 사용할 수 있습니다 .

return String.format("%1$" + length + "s", inputString).replace(' ', '0');

기본적으로 채우기 작업은 공백을 사용하여 수행됩니다. 이것이 0이나 다른 문자로 채우려면 replace () 메서드 를 사용해야하는 이유  입니다.

오른쪽 패드의 경우 다른 플래그를 사용해야합니다.  % 1 $-

3. 라이브러리를 사용 하여 문자열 채우기

그리고 이미 패딩 기능을 제공하는 외부 라이브러리가 있습니다.

3.1. Apache Commons Lang

Apache Commons Lang은 Java 유틸리티 클래스 패키지를 제공합니다. 가장 인기있는 것 중 하나는  StringUtils 입니다.

이를 사용하려면 pom.xml 파일에 의존성 을  추가 하여 프로젝트에 포함시켜야 합니다.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
</dependency>

그리고 나서 우리 가 만든 메소드와 마찬가지로 inputString 과  length를 전달합니다 . 패딩 문자를 전달할 수도 있습니다.

assertEquals("    123456", StringUtils.leftPad("123456", 10));
assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));

다시 말하지만, 문자열 은 기본적으로 공백으로 채워지거나 다른 채우기 문자를 명시 적으로 설정해야합니다.

해당하는 rightPad () 메서드도 있습니다.

Apache Commons Lang 3의 더 많은 기능을 탐색하려면 소개 예제을 확인하십시오 . StringUtils 클래스를 사용하여 문자열을 조작하는 다른 방법 을 보려면 이 문서 를 참조 하십시오 .

3.2. Google 구아바

우리가 사용할 수있는 또 다른 라이브러리는 Google의 Guava 입니다. 물론, 먼저 의존성 을 추가하여 프로젝트에 추가해야 합니다 .

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>27.0-jre</version>
</dependency>

그런 다음 Strings 클래스 를 사용하십시오 .

assertEquals("    123456", Strings.padStart("123456", 10, ' '));
assertEquals("0000123456", Strings.padStart("123456", 10, '0'));

이 메서드에는 기본 패드 문자가 없으므로 매번 전달해야합니다.

오른쪽 패드에는 padEnd () 메서드를 사용할 수 있습니다 .

구아바 라이브러리는 훨씬 더 많은 기능을 제공하며 많은 기능을 다루었습니다. 여기에서 구아바 관련 기사를 찾을 수 있습니다 .

4. 결론

이 빠른 기사에서는 Java 에서 문자열 을 채우는 방법을 설명했습니다. 자체 구현 또는 기존 라이브러리를 사용하여 예제를 제시했습니다.

평소처럼 전체 소스 코드는 GitHub 에서 찾을 수 있습니다 .