从一个整数格式化字符串,并保持前导零(PowerBuilder)
所以我有一些代码需要一个字符串,并填充一些零到末尾,以使其长度为7位数字。从一个整数格式化字符串,并保持前导零(PowerBuilder)
uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '#######')
与此问题是,当像“001”被放在一个数字,则返回“1000000”,当我需要它返回“0010000”
我猜有一个变化######格式不会削减前导零,但我找不到任何东西。
如果它有什么不同,这是在PowerBuilder 9.0.2环境中。
它看起来像从数据类型开始(它不完全清楚)是一种数字数据类型。如果前导零是重要的并且需要保留,那么数字数据类型是错误的。当“001”与“1”不相同时,你不打算加,减等等,那么你所处理的不是一个数字,而是一个数字字符串。你的问题是你被这种错误分类所困扰的方法之一。
你可以做的是将你的EditMask的MaskDataType改为StringMask !,并使用像“######”这样的Mask,它将禁止输入数据的字母字符。
现在,如果你已经有了存储数字数据,这是一个不同的问题....
祝你好运,
特里。
如果下面的内容不符合要求,您将不得不提供预期输入和输出的示例。
outputString = left(inputString + fill("0", 7), 7)
与变量更换常数产生某些语言中可用的rpad功能。
RPAD(inputString,LEN,padString)
return left(inputString + fill(padString, len), len)
没有前导零在数字值,所以你不能直接做你想做的。
假设您的数字的最大值为999(3位),请按照以下说明进行操作。
将数值转换为字符串。
检查字符串的长度。
如果字符串长度小于3,垫零的这样的总长度适当数量的前缘3.
垫尾部字符串4零的以获得总共7。
繁琐,但给你的数据类型,你没有太多的选择。
只是使用的字符串功能
所需数量的可与“0”格式字符串指定
uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '0000000')