所以我有一些代码,它接受一个字符串并在末尾填充一些零,以使其长度为7位。
uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '#######')
这个问题是当输入像“001”这样的数字时,当我需要它返回“0010000”时它返回“1000000”
我猜测######格式的变体不会导致前导零,但我找不到任何内容。
如果它有任何区别,这是在PowerBuilder 9.0.2环境中。
答案 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个位置),请执行以下操作。
将数值转换为字符串。
检查字符串的长度。
如果字符串长度小于3,则使用适当数量的零填充前沿,使总长度为3.
用4个零填充尾随字符串以获得总共7个。
繁琐但是根据您的数据类型,您没有太多选择。