[java] 공백으로 채워진 고정 길이 문자열 생성

문자 위치 기반 파일을 생성하려면 고정 길이 문자열을 생성해야합니다. 누락 된 문자는 공백 문자로 채워야합니다.

예를 들어, CITY 필드에는 15 자의 고정 길이가 있습니다. 입력 “Chicago”및 “Rio de Janeiro”의 경우 출력은 다음과 같습니다.

"시카고"
" 리오 데 자네이로"

.



답변

Java 1.5부터 java.lang.String.format (String, Object …) 메소드 사용할 수 있으며 format과 같은 printf를 사용할 수 있습니다.

형식 문자열 "%1$15s"이 작업을 수행합니다. 여기서는 1$인수 인덱스를 s나타내며, 인수가 문자열이며 문자열 15의 최소 ​​너비를 나타냅니다. 종합 : "%1$15s".

일반적인 방법의 경우 다음이 있습니다.

public static String fixedLengthString(String string, int length) {
    return String.format("%1$"+length+ "s", string);
}

누군가가 다른 형식 문자열을 제안하여 빈 공간을 특정 문자로 채울 수 있습니까?


답변

String.format의 패딩을 공백으로 활용 하고 원하는 문자로 바꿉니다.

String toPad = "Apple";
String padded = String.format("%8s", toPad).replace(' ', '0');
System.out.println(padded);

인쇄 000Apple합니다.


String.format공백에 문제가없는 성능이 더 높은 버전을 업데이트 하십시오 (힌트를 얻으려면 Rafael Borja에게 문의 하십시오).

int width = 10;
char fill = '0';

String toPad = "New York";
String padded = new String(new char[width - toPad.length()]).replace('\0', fill) + toPad;
System.out.println(padded);

인쇄 00New York합니다.

그러나 음수 길이의 문자 배열을 만들지 못하도록 검사를 추가해야합니다.


답변

이 코드는 정확히 주어진 문자 수를 갖습니다. 공백으로 채워지거나 오른쪽이 잘립니다.

private String leftpad(String text, int length) {
    return String.format("%" + length + "." + length + "s", text);
}

private String rightpad(String text, int length) {
    return String.format("%-" + length + "." + length + "s", text);
}


답변

아래와 같은 간단한 방법을 작성할 수도 있습니다.

public static String padString(String str, int leng) {
        for (int i = str.length(); i <= leng; i++)
            str += " ";
        return str;
    }


답변

올바른 패드를 위해서는 String.format("%0$-15s", str)

즉, -기호는 “오른쪽”패드가되고 -기호는 “왼쪽”패드가됩니다.

여기 내 예를 참조하십시오

http://pastebin.com/w6Z5QhnJ

입력은 문자열과 숫자 여야합니다.

예제 입력 : Google 1


답변

import org.apache.commons.lang3.StringUtils;

String stringToPad = "10";
int maxPadLength = 10;
String paddingCharacter = " ";

StringUtils.leftPad(stringToPad, maxPadLength, paddingCharacter)

Guava imo보다 훨씬 낫습니다. Guava를 사용하는 단일 엔터프라이즈 Java 프로젝트는 본 적이 없지만 Apache String Utils는 매우 일반적입니다.


답변

구아바 라이브러리Strings.padStart을 다른 많은 유용한 유틸리티와 함께, 당신이 원하는 정확히 않습니다.