я знаю, что эта ветка довольно старая, и исходный вопрос был для простого решения, но если он должен быть очень быстрым, вы должны использовать массив символов.
public static String pad(String str, int size, char padChar)
{
if (str.length() < size)
{
char[] temp = new char[size];
int i = 0;
while (i < str.length())
{
temp[i] = str.charAt(i);
i++;
}
while (i < size)
{
temp[i] = padChar;
i++;
}
str = new String(temp);
}
return str;
}
решение для форматирования не является оптимальным. просто построение строки формата создает 2 новые строки.
Решение apache можно улучшить, инициализируя sb с целевым размером, поэтому замените его ниже
StringBuffer padded = new StringBuffer(str);
с
StringBuffer padded = new StringBuffer(pad);
padded.append(value);
будет препятствовать росту внутреннего буфера sb.