#java
#java
Вопрос:
есть ли более эффективный способ сгенерировать строку, полную пробелов, с настраиваемым размером, например, следующим:
private String getBlanks (int numberOfBlanks)
{
String theBlanks = "";
for (int i = 0; i < numberOfBlanks; i )
{
theBlanks = theBlanks " ";
}
return theBlanks;
}
Возможно, с помощью StringBuilder
или любого другого типа?
РЕДАКТИРОВАТЬ: Поскольку у нас есть Appache Commons Lang, наиболее удобный способ сделать это — использовать строковые утилиты — leftPad, спасибо всем за ответы!
Спасибо
Комментарии:
1. Каким образом эффективно? Сложность кодирования или время выполнения? В любом случае, вопрос почти спорный с точки зрения того, почему его нужно было бы сделать более эффективным.
2. Я не согласен с этим. Хотя это не было бы ужасным преступлением против человечества, если бы сделать это таким образом, совсем не аккуратно манипулировать строками таким образом. Приведенный ниже ответ Amines — это (IMO) способ сделать это.
3. @Tejs больше относится ко времени выполнения
4. Кстати, рассмотрите возможность использования StrBuilder (часть apache commons lang) вместо StringBuilder. это сокращение замены, и люди из Apache утверждают, что это лучше (в общем, я верю им на слово).
Ответ №1:
Может быть, вот так:
private String getBlanks(int numberOfBlanks) {
char[] chars = new char[numberOfBlanks];
Arrays.fill(chars, (char)32);
return new String(chars);
}
Комментарии:
1. Очень умно (и какая-то действительно длинная фраза, чтобы я мог ее опубликовать).
Ответ №2:
С помощью Guava
String blanks = Strings.repeat(" ", numOfblanks);
Ответ №3:
Быстрый взлом с помощью StringUtils:
return StringUtils.leftPad("", numberOfBlanks, ' ');
Комментарии:
1. О, я забыл сказать, для этого вам нужен Apache Commons Lang
2. У нас есть Appache Commons, и я нахожу этот способ наиболее эффективным 🙂
Ответ №4:
Прежде всего — используйте StringBuilder
, а затем верните StringBuilder.toString
Ответ №5:
Вам нужен StringBuilder:
private String getBlanks (int numberOfBlanks)
{
StringBuilder theBlanks = new StringBuilder(numberOfBlanks);
for (int i = 0; i < numberOfBlanks; i ) theBlanks.append(" ");
return theBlanks.toString();
}
Ответ №6:
String getBlankString(int length){
StringBuffer sb=new StringBuffer(length);
for(int i=0;i<length;i ){
sb.append(" ");
}
return sb.toString();
}
Комментарии:
1. StringBuffer потокобезопасен, это необходимо только в определенных случаях, в противном случае это только добавляет дополнительную блокировку.
Ответ №7:
private String getBlanks (int numberOfBlanks) {
StringBuilder sb = new StringBuilder();
sb.setLength(numberOfBlanks);
sb.replace(0, numberOfBlanks-1, " ");
return sb.toString();
}