Я знаю, что эта ветка является старой, и исходный вопрос был для простого решения, но если он должен быть действительно быстрым, вы должны использовать массив символов.
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;
}
решение форматера не является оптимальным. просто построение строки формата создает две новые строки.
Решение apache можно улучшить, инициализируя sb с целевым размером, заменяя ниже
StringBuffer padded = new StringBuffer(str);
на
StringBuffer padded = new StringBuffer(pad);
padded.append(value);
будет препятствовать росту внутреннего буфера sb.