2011-04-06 105 views
2

所以我有一些代碼需要一個字符串,並填充一些零到末尾,以使其長度爲7位數字。從一個整數格式化字符串,並保持前導零(PowerBuilder)

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

與此問題是,當像「001」被放在一個數字,則返回「1000000」,當我需要它返回「0010000」

我猜有一個變化######格式不會削減前導零,但我找不到任何東西。

如果它有什麼不同,這是在PowerBuilder 9.0.2環境中。

回答

1

它看起來像從數據類型開始(它不完全清楚)是一種數字數據類型。如果前導零是重要的並且需要保留,那麼數字數據類型是錯誤的。當「001」與「1」不相同時,你不打算加,減等等,那麼你所處理的不是一個數字,而是一個數字字符串。你的問題是你被這種錯誤分類所困擾的方法之一。

你可以做的是將你的EditMask的MaskDataType改爲StringMask !,並使用像「######」這樣的Mask,它將禁止輸入數據的字母字符。

現在,如果你已經有了存儲數字數據,這是一個不同的問題....

祝你好運,

特里。

1

如果下面的內容不符合要求,您將不得不提供預期輸入和輸出的示例。

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

與變量更換常數產生某些語言中可用的rpad功能。

RPAD(inputString,LEN,padString)

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

0

沒有前導零在數字值,所以你不能直接做你想做的。

假設您的數字的最大值爲999(3位),請按照以下說明進行操作。

  1. 將數值轉換爲字符串。

  2. 檢查字符串的長度。

  3. 如果字符串長度小於3,墊零的這樣的總長度適當數量的前緣3.

  4. 墊尾部字符串4零的以獲得總共7。

繁瑣,但給你的數據類型,你沒有太多的選擇。

2

只是使用的字符串功能

所需數量的可與「0」格式字符串指定

uo_sin.uo_em_sin_number.em_sin_number.text = string(long(ilCurrSin), '0000000') 
相關問題