从一个整数格式化字符串,并保持前导零(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位),请按照以下说明进行操作。

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

  2. 检查字符串的长度。

  3. 如果字符串长度小于3,垫零的这样的总长度适当数量的前缘3.

  4. 垫尾部字符串4零的以获得总共7。

繁琐,但给你的数据类型,你没有太多的选择。

只是使用的字符串功能

所需数量的可与“0”格式字符串指定

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