Струны - заполнение ведущих нулей с нуля - PullRequest
2 голосов
/ 14 января 2011

Я читаю массив жестко закодированных строк числовых символов - все позиции заполнены символом, даже для начальных нулей.Таким образом, можно с уверенностью проанализировать его, используя подстроку (начало, конец) для преобразования в числовое значение.

Пример: "0123 0456 0789"

Однако строка из базы данных не заполняетведущий ноль с «нулевым символом», он просто выбирает «123 456 789», который является правильным для арифметического числа, но не для моих нужд и создает проблемы при разборе.

Перед написанием условий для проверки на ведениенули и добавление их в строку, если необходимо, есть ли простой способ указать, что они будут заполнены символом?Я не нахожу это в своей книге по Java ...

Я мог бы сделать три условия за время, которое потребовалось, чтобы опубликовать это, но это больше об "образовании" ...

Спасибо

Ответы [ 5 ]

2 голосов
/ 14 января 2011

String.format ("% 010d", число);или fromDB.replaceAll ("", "0");или, возможно, даже лучше, исправить это в БД.

2 голосов
/ 14 января 2011

Более простой способ сделать это - использовать string.split() для разделения чисел вместо того, чтобы вытаскивать отдельные индексы.

1 голос
/ 14 января 2011

Возможно StringUtils из org.apache.commons.lang может быть полезно для вас:

StringUtils.leftPad("123", 4, '0') = "0123"
0 голосов
/ 14 января 2011

Еще один метод - использовать DecimalFormat:

DecimalFormat df = new DecimalFormat("####")'

String fourDigitString = df.format(numberFromDB);
0 голосов
/ 14 января 2011

Простой способ регулярных выражений:

String input = "123 456 789";
String output = input.replaceAll("\\b[1-9]\\d*", "0$0");
System.out.println(output); //prints "0123 0456 0789"

Это заменяет все «слова», состоящие из любой цифры, но начинающиеся с 1-9 (не 0), тем же словом с префиксом 0.

Я согласен с другими оценками, что вы должны просто сделать анализ менее хрупким, используя что-то вроде String.split() вместо фиксированной ширины.

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