Какими способами вы можете создать строку с 2000 "пробелами" - PullRequest
6 голосов
/ 14 июля 2010

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

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

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

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

Для тех, кого это может заинтересовать, это потому, что у нас есть тип XML для объекта данных, который при вставке в БД имеет значение null. Затем он обновляется с помощью строки XML, обычно около 2000 символов. В Oracle предварительное резервирование этого пространства может предотвратить миграцию строк, что приведет к повышению производительности.

Спасибо!

Ответы [ 8 ]

18 голосов
/ 14 июля 2010
char[] spacesArray = new char[2000];
Arrays.fill(spacesArray, ' ');
String spaces = new String(spacesArray);
3 голосов
/ 14 июля 2010

самый простой ответ: (прокрутите, чтобы увидеть все коды)

String s = "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "; // 2000 spaces
1 голос
/ 14 июля 2010

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

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

1 голос
/ 14 июля 2010

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

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 голос
/ 14 июля 2010

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

0 голосов
/ 23 августа 2011

См. Этот другой вопрос.

Можно ли умножить строки в Java для повторения последовательностей?

В библиотеках Apache Commons StringUtils и Google Guava есть команды для умножения (повтор) строки.

0 голосов
/ 14 июля 2010

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

StringBuilder sb = new StringBuilder();
for(int i = 0; i < 2000; ++i)
   sb.append(" ");
String str = new String(sb);
0 голосов
/ 14 июля 2010

StringUtils.repeat(" ", 2000) (из общего языка)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...