Какие пути могут Вы создавать строку с 2 000 “пробелов”

По различным причинам я пытаюсь установить строку на 2 000 пробелов. В настоящее время я использую:

String s = String.format("%1$-2000s"," ");

Здорово для Java 5, однако, некоторые разработчики в нашем отделе используют 1.4, и это не работает.

Я задавался вопросом, действительно ли какими-либо другими способами достигнуть является тот же результат? Я знаю, что могу сделать вещи как для цикла, добавляющего пространство за один раз, но я ищу что-то простое как параметр формата.

Для тех, которые могут интересоваться тем, почему мне нужно это, это - потому что у нас есть тип XML на dataobject, который на вставке в DB является пустым. Это затем обновляется со строкой XML, обычно приблизительно 2 000 символов в размере. В Oracle, предварительно резервируя это пространство может предотвратить миграцию строки, поэтому, увеличив производительность.

Спасибо!

6
задан northpole 13 July 2010 в 20:41
поделиться

7 ответов

char[] spacesArray = new char[2000];
Arrays.fill(spacesArray, ' ');
String spaces = new String(spacesArray);
18
ответ дан 8 December 2019 в 04:28
поделиться

Вы можете использовать lpad ('', 2000, '') в операторе вставки напрямую, чтобы сообщить Oracle, что нужно создать желаемое значение.

Фактически, вы можете установить для рассматриваемого поля это значение по умолчанию, что может избавить вас от необходимости изменять его в нескольких местах (если ваш код явно отправляет null в качестве значения для поля, это переопределит по умолчанию).

2
ответ дан 8 December 2019 в 04:28
поделиться

StringBuffer и затем добавьте пробел 2000 раз в цикле, а затем - toString (). Я не думаю, что есть какие-то «более простые» способы сделать это, чтобы не делать этого в любом случае под прикрытием.

Если вы будете делать это часто, это станет хорошей библиотечной функцией.

1
ответ дан 8 December 2019 в 04:28
поделиться

Если ничто другое не работает:

StringBuilder sb = new StringBuilder();
for(int i = 0; i < 2000; ++i)
   sb.append(" ");
String str = new String(sb);
0
ответ дан 8 December 2019 в 04:28
поделиться

Случайная функция, которую я нашел в моей личной библиотеке:

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;
    }
}

Не утверждаю, что это самый быстрый способ создания пробелов, но он работает: -)

1
ответ дан 8 December 2019 в 04:28
поделиться

самый простой ответ:

String s = "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "; // 2000 spaces
3
ответ дан 8 December 2019 в 04:28
поделиться

StringUtils.repeat ("", 2000) (из commons-lang)

Однако я не уверен, следует ли проводить такие микрооптимизации за счет стоимости кода, который потребует 5 строк комментарий, чтобы объяснить, зачем это нужно. Если вы это сделаете - обязательно добавьте развернутый комментарий, иначе представьте реакцию читающих ваш код.

0
ответ дан 8 December 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: