Пэд цифры, пока строка не будет 8 символов в Java? - PullRequest
4 голосов
/ 27 марта 2011

Я читал и не смог найти фрагмент. Я ищу функцию, которая принимает строку и левые нули (0), пока вся строка не станет длиной 8 цифр. Все остальные фрагменты, которые я нахожу, позволяют целочисленному контролю, сколько дополняет, а не сколько дополняет, пока вся строка не станет длиной x цифр. в Яве.

Пример

BC238 => 000BC289
4 => 00000004

и т. Д. Спасибо.

Ответы [ 4 ]

16 голосов
/ 27 марта 2011

Если вы начинаете со строки, длина которой, как вы знаете, <= 8 символов, вы можете сделать что-то вроде этого: </p>

s = "00000000".substring(0, 8 - s.length()) + s;

На самом деле, это также работает:

s = "00000000".substring(s.length()) + s;

Если вы не уверены, что длина s не превышает 8 символов, вам необходимо проверить его перед использованием любого из вышеперечисленных (или использовать Math.min(8, s.length()) или быть готовым поймать IndexOutOfBoundsException). *

Если вы начинаете с целого числа и хотите преобразовать его в шестнадцатеричное с заполнением, вы можете сделать это:

String s = String.format("%08x", Integer.valueOf(val));
5 голосов
/ 27 марта 2011
org.apache.commons.lang.StringUtils.leftPad(String str, int size, char padChar)

Вы можете посмотреть здесь

2 голосов
/ 27 марта 2011

Как насчет этого:

s = (s.length()) < 8 ? ("00000000".substring(s.length()) + s) : s;

или

s = "00000000".substring(Math.min(8, s.length())) + s;

Я предпочитаю использовать существующий библиотечный метод, такой как метод из Apache Commons StringUtils или String.format(...). Цель вашего кода более ясна, если вы используете библиотечный метод, если он имеет разумное имя.

1 голос
/ 27 марта 2011

Ленивый способ - использовать что-то вроде: Right ("00000000" + yourstring, 8) с простыми реализациями функции Right, доступными здесь: http://geekswithblogs.net/congsuco/archive/2005/07/07/45607.aspx

...