По различным причинам я пытаюсь установить строку на 2 000 пробелов. В настоящее время я использую:
String s = String.format("%1$-2000s"," ");
Здорово для Java 5, однако, некоторые разработчики в нашем отделе используют 1.4, и это не работает.
Я задавался вопросом, действительно ли какими-либо другими способами достигнуть является тот же результат? Я знаю, что могу сделать вещи как для цикла, добавляющего пространство за один раз, но я ищу что-то простое как параметр формата.
Для тех, которые могут интересоваться тем, почему мне нужно это, это - потому что у нас есть тип XML на dataobject, который на вставке в DB является пустым. Это затем обновляется со строкой XML, обычно приблизительно 2 000 символов в размере. В Oracle, предварительно резервируя это пространство может предотвратить миграцию строки, поэтому, увеличив производительность.
Спасибо!
char[] spacesArray = new char[2000];
Arrays.fill(spacesArray, ' ');
String spaces = new String(spacesArray);
Вы можете использовать lpad ('', 2000, '')
в операторе вставки напрямую, чтобы сообщить Oracle, что нужно создать желаемое значение.
Фактически, вы можете установить для рассматриваемого поля это значение по умолчанию, что может избавить вас от необходимости изменять его в нескольких местах (если ваш код явно отправляет null в качестве значения для поля, это переопределит по умолчанию).
StringBuffer и затем добавьте пробел 2000 раз в цикле, а затем - toString (). Я не думаю, что есть какие-то «более простые» способы сделать это, чтобы не делать этого в любом случае под прикрытием.
Если вы будете делать это часто, это станет хорошей библиотечной функцией.
Если ничто другое не работает:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 2000; ++i)
sb.append(" ");
String str = new String(sb);
Случайная функция, которую я нашел в моей личной библиотеке:
public static String whiteSpace2(int l) {
if (l==0) return "";
String half=whiteSpace2(l/2);
if ((l&1)!=0) {
return half+" "+half;
} else {
return half+half;
}
}
Не утверждаю, что это самый быстрый способ создания пробелов, но он работает: -)
StringUtils.repeat ("", 2000)
(из commons-lang)
Однако я не уверен, следует ли проводить такие микрооптимизации за счет стоимости кода, который потребует 5 строк комментарий, чтобы объяснить, зачем это нужно. Если вы это сделаете - обязательно добавьте развернутый комментарий, иначе представьте реакцию читающих ваш код.