从整数格式化字符串,并保持前导零(PowerBuilder)

时间:2011-04-06 18:25:59

标签: powerbuilder

所以我有一些代码,它接受一个字符串并在末尾填充一些零,以使其长度为7位。

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

这个问题是当输入像“001”这样的数字时,当我需要它返回“0010000”时它返回“1000000”

我猜测######格式的变体不会导致前导零,但我找不到任何内容。

如果它有任何区别,这是在PowerBuilder 9.0.2环境中。

4 个答案:

答案 0 :(得分:2)

只需使用字符串函数

可以使用格式字符串

中的“0”指定所需的数字
uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '0000000')

答案 1 :(得分:1)

看起来您正在开始的数据类型(它并不完全清楚)是一种数字数据类型。如果前导零是重要的并且需要保留,则数字数据类型是错误的使用。当“001”与“1”不同,并且您不打算添加,减去等等时,那么您所处理的不是数字,而是数字字符串。你的问题是你被错误分类所困扰的方法之一。

您可以做的是将EditMask的MaskDataType更改为StringMask !,并使用类似“######”的掩码,这将禁止输入数据中的字母字符。

现在,如果您以数字方式存储数据,那就是另一个问题....

祝你好运,

特里。

答案 2 :(得分:1)

如果以下内容没有达到你想要的效果,你必须提供预期输入和输出的例子。

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

用变量替换常量会产生某些语言的rpad函数。

rpad(inputString,len,padString)

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

答案 3 :(得分:0)

数值中没有前导零,因此您无法直接执行所需的操作。

假设您隐含的数字的最大值为999(3个位置),请执行以下操作。

  1. 将数值转换为字符串。

  2. 检查字符串的长度。

  3. 如果字符串长度小于3,则使用适当数量的零填充前沿,使总长度为3.

  4. 用4个零填充尾随字符串以获得总共7个。

  5. 繁琐但是根据您的数据类型,您没有太多选择。