Левая клавиша обнуляет строковую переменную в Java - PullRequest
6 голосов
/ 01 ноября 2011

У меня есть строковая переменная из 10 цифр, если что-то меньше 10, мне нужно добавить '0' перед переменной.Пример, если строка 9909909, она должна быть возвращена как 0009909909. как это сделать в java

Ответы [ 10 ]

9 голосов
/ 11 февраля 2014

Вы можете использовать leftPad функцию StringUtils
Итак, это будет выглядеть так:

StringUtils.leftPad(myString, 10,"0");
8 голосов
/ 06 января 2014

Попробуйте использовать класс Apache StringUtils.

import org.apache.commons.lang.StringUtils;
...

String seqNumber = "123"
int seqNumberLength = 10;
String result = StringUtils.leftPad(seqNumber, seqNumberLength,"0")

Результат равен 0000000123

6 голосов
/ 01 ноября 2011

Это должно сделать тебя:

System.out.println("Number: " + String.format("%010d", 1));

Заданная часть 'format string' определена здесь: http://download.oracle.com/javase/1,5.0/docs/api/java/util/Formatter.html#syntax

5 голосов
/ 25 октября 2016

Есть несколько способов сделать это.Вы можете проверить производительность этих методов, создав модульные тесты.Вам нужно проверить это самостоятельно: я написал это без компиляции:

  1. Используйте пакет Apache StringUtils;

    StringUtils.leftPad(yourString, 10, "0");
    
  2. Трюк, чтобы избежать выражения for / while:

    String newString = "0000000000".concat(yourString);
    newString = newString.substring(newString.length() - 10);
    
  3. Трюк, использующий замену:

    String newString = String.format("%10s", youString).replace(" ", "0");
    
  4. Использование классическогов то время как с StringBuilder:

    StringBuilder sb = new StringBuilder(yourString);
    int charsToGo = 10 - sb.length();
    while(charsToGo > 0) {
       sb.insert(0, '0');
       charsToGo--;
    }
    

Вы можете инкапсулировать это развитие класса StringUtils, чтобы избежать импорта слишком большого количества пакетов.

5 голосов
/ 01 ноября 2011

Google Guava имеет метод Strings.padStart() для этой цели:

Возвращает строку длиной не менее minLength, состоящую из строки, в которую добавлено столько копий padChar, сколько необходимо для достижения этой длины. Например,

padStart ("7", 3, '0') возвращает "007"

padStart ("2010", 3, '0') возвращает "2010"

2 голосов
/ 01 ноября 2011
  1. Получить размер строки - String.size ();
  2. , если размер меньше 10, тогда создайте строку с нулями (сколько вам нужно).Вы можете циклически проходить.
  3. Объединить две строки - первой будет строка «нули».

Надеюсь, это поможет!

0 голосов
/ 01 ноября 2011

Используйте StringBuilder и добавляйте нули, пока не получите желаемую длину.

StringBuilder sb = new StringBuilder(myString);
while (sb.length() < 10)
{
    sb.insert(0,'0');
}
myString = sb.toString();
0 голосов
/ 01 ноября 2011
for (int i=0; i<(10-str.length); i++) {
    str = "0" + str;
}
0 голосов
/ 01 ноября 2011
int zeroesNeeded = 10 - myString.length();
while(zeroesNeeded > 0)
{
   myString = "0" + myString;
   zeroesNeeded--;
}
0 голосов
/ 01 ноября 2011
int value = 5;
String strValue = "" + value;

while (strValue.length() < 10) {
  strValue = "0" + strValue;
}

// strValue now equals "0000000005"
  • Замените value на любое фактическое число, равное
  • . Замените 10 на любое ограничение (если это фиксированный предел, рассмотрите возможность использования переменной final)
  • Если это критичная по скорости операция, вместо простой конкатенации строк, рассмотрите возможность использования StringBuffer или StringBuilder .

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