답변:
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);
}
누군가가 다른 형식 문자열을 제안하여 빈 공간을 특정 문자로 채울 수 있습니까?
Maybe someone can suggest another format string to fill the empty spaces with an specific character?
-내가 준 대답을보세요.
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
합니다.
그러나 음수 길이의 문자 배열을 만들지 못하도록 검사를 추가해야합니다.
아래와 같은 간단한 방법을 작성할 수도 있습니다.
public static String padString(String str, int leng) {
for (int i = str.length(); i <= leng; i++)
str += " ";
return str;
}
올바른 패드를 위해서는 String.format("%0$-15s", str)
즉, -
기호는 "오른쪽"패드가되고 -
기호는 "왼쪽"패드가됩니다.
여기 내 예를 참조하십시오
입력은 문자열과 숫자 여야합니다.
예제 입력 : 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을 다른 많은 유용한 유틸리티와 함께, 당신이 원하는 정확히 않습니다.
여기에 깔끔한 트릭이 있습니다.
// E.g pad("sss","00000000"); should deliver "00000sss".
public static String pad(String string, String pad) {
/*
* Add the pad to the left of string then take as many characters from the right
* that is the same length as the pad.
* This would normally mean starting my substring at
* pad.length() + string.length() - pad.length() but obviously the pad.length()'s
* cancel.
*
* 00000000sss
* ^ ----- Cut before this character - pos = 8 + 3 - 8 = 3
*/
return (pad + string).substring(string.length());
}
public static void main(String[] args) throws InterruptedException {
try {
System.out.println("Pad 'Hello' with ' ' produces: '"+pad("Hello"," ")+"'");
// Prints: Pad 'Hello' with ' ' produces: ' Hello'
} catch (Exception e) {
e.printStackTrace();
}
}
다음은 테스트 케이스가있는 코드입니다.
@Test
public void testNullStringShouldReturnStringWithSpaces() throws Exception {
String fixedString = writeAtFixedLength(null, 5);
assertEquals(fixedString, " ");
}
@Test
public void testEmptyStringReturnStringWithSpaces() throws Exception {
String fixedString = writeAtFixedLength("", 5);
assertEquals(fixedString, " ");
}
@Test
public void testShortString_ReturnSameStringPlusSpaces() throws Exception {
String fixedString = writeAtFixedLength("aa", 5);
assertEquals(fixedString, "aa ");
}
@Test
public void testLongStringShouldBeCut() throws Exception {
String fixedString = writeAtFixedLength("aaaaaaaaaa", 5);
assertEquals(fixedString, "aaaaa");
}
private String writeAtFixedLength(String pString, int lenght) {
if (pString != null && !pString.isEmpty()){
return getStringAtFixedLength(pString, lenght);
}else{
return completeWithWhiteSpaces("", lenght);
}
}
private String getStringAtFixedLength(String pString, int lenght) {
if(lenght < pString.length()){
return pString.substring(0, lenght);
}else{
return completeWithWhiteSpaces(pString, lenght - pString.length());
}
}
private String completeWithWhiteSpaces(String pString, int lenght) {
for (int i=0; i<lenght; i++)
pString += " ";
return pString;
}
나는 TDD를 좋아한다;)
String ItemNameSpacing = new String(new char[10 - masterPojos.get(i).getName().length()]).replace('\0', ' ');
printData += masterPojos.get(i).getName()+ "" + ItemNameSpacing + ": " + masterPojos.get(i).getItemQty() +" "+ masterPojos.get(i).getItemMeasure() + "\n";
행복한 코딩 !!
public static String padString(String word, int length) {
String newWord = word;
for(int count = word.length(); count < length; count++) {
newWord = " " + newWord;
}
return newWord;
}