У меня есть строковая переменная из 10 цифр, если что-то меньше 10, мне нужно добавить '0' перед переменной.Пример, если строка 9909909, она должна быть возвращена как 0009909909. как это сделать в java
Вы можете использовать leftPad функцию StringUtils Итак, это будет выглядеть так:
leftPad
StringUtils
StringUtils.leftPad(myString, 10,"0");
Попробуйте использовать класс Apache StringUtils.
import org.apache.commons.lang.StringUtils; ... String seqNumber = "123" int seqNumberLength = 10; String result = StringUtils.leftPad(seqNumber, seqNumberLength,"0")
Результат равен 0000000123
Это должно сделать тебя:
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
Есть несколько способов сделать это.Вы можете проверить производительность этих методов, создав модульные тесты.Вам нужно проверить это самостоятельно: я написал это без компиляции:
Используйте пакет Apache StringUtils;
StringUtils.leftPad(yourString, 10, "0");
Трюк, чтобы избежать выражения for / while:
String newString = "0000000000".concat(yourString); newString = newString.substring(newString.length() - 10);
Трюк, использующий замену:
String newString = String.format("%10s", youString).replace(" ", "0");
Использование классическогов то время как с StringBuilder:
StringBuilder sb = new StringBuilder(yourString); int charsToGo = 10 - sb.length(); while(charsToGo > 0) { sb.insert(0, '0'); charsToGo--; }
Вы можете инкапсулировать это развитие класса StringUtils, чтобы избежать импорта слишком большого количества пакетов.
Google Guava имеет метод Strings.padStart() для этой цели:
Strings.padStart()
Возвращает строку длиной не менее minLength, состоящую из строки, в которую добавлено столько копий padChar, сколько необходимо для достижения этой длины. Например, padStart ("7", 3, '0') возвращает "007" padStart ("2010", 3, '0') возвращает "2010"
Возвращает строку длиной не менее minLength, состоящую из строки, в которую добавлено столько копий padChar, сколько необходимо для достижения этой длины. Например,
padStart ("7", 3, '0') возвращает "007"
padStart ("2010", 3, '0') возвращает "2010"
Надеюсь, это поможет!
Используйте StringBuilder и добавляйте нули, пока не получите желаемую длину.
StringBuilder
StringBuilder sb = new StringBuilder(myString); while (sb.length() < 10) { sb.insert(0,'0'); } myString = sb.toString();
for (int i=0; i<(10-str.length); i++) { str = "0" + str; }
int zeroesNeeded = 10 - myString.length(); while(zeroesNeeded > 0) { myString = "0" + myString; zeroesNeeded--; }
int value = 5; String strValue = "" + value; while (strValue.length() < 10) { strValue = "0" + strValue; } // strValue now equals "0000000005"
value
10
final