Форматирование строки из целого числа и сохранение начальных нулей (PowerBuilder) - PullRequest
2 голосов
/ 06 апреля 2011

Итак, у меня есть некоторый код, который берет строку и добавляет несколько нулей в конец, чтобы сделать его длиной 7 цифр.

uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '#######')

Проблема в том, что когда вставляется число типа «001», возвращается «1000000», когда мне нужно вернуть «0010000»

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

Если это имеет какое-то значение, это в среде PowerBuilder 9.0.2.

Ответы [ 4 ]

2 голосов
/ 26 июля 2011

просто используйте строковую функцию

необходимое число можно указать с помощью '0' в строке формата

uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '0000000')
1 голос
/ 07 апреля 2011

Если нижеприведенное не дает желаемого результата, вам нужно будет привести примеры ожидаемых входных и выходных данных.

outputString = left(inputString + fill("0", 7), 7)

Замена констант переменными приводит к rpad функция доступна на некоторых языках.

rpad (inputString, len, padString)

return left(inputString + fill(padString, len), len)

1 голос
/ 07 апреля 2011

Похоже, тип данных, с которого вы начинаете (это не совсем понятно), является числовым типом данных. Если начальные нули важны и должны быть сохранены, тогда числовой тип данных является неправильным для использования. Когда «001» не совпадает с «1», и вы не собираетесь добавлять, вычитать и т. Д., То вы имеете дело не с числом, а с числовой строкой. Ваша проблема - один из способов, которым вы можете быть укушены этой неправильной классификацией.

Что вы можете сделать, это изменить MaskDataType вашей EditMask на StringMask !, и использовать маску наподобие "######", которая запрещает вводить буквенные символы.

Теперь, если у вас есть данные , хранящиеся в цифровом виде, это другая проблема ...

Удачи,

Терри.

0 голосов
/ 11 апреля 2011

В числовом значении нет начальных нулей, поэтому вы не можете напрямую делать то, что хотите.

Предполагая, что максимальное значение вашего числа равно 999 (3 знака), как вы и предполагали, сделайте что-то вродеследующее.

  1. Преобразовать числовое значение в строку.

  2. Проверьте длину строки.

  3. Если длина строки меньше 3, заполните передний край соответствующим количеством нулейитого общая длина равна 3.

  4. Заполните конечную строку 4 нулями, чтобы получить в общей сложности 7.

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

...