2009-09-08 192 views
1

將一些代碼從VB6移植到VB.NET。它一直使用WriteWriteLine來產生輸出文件。在VB.NET中編寫格式化代碼

現在,我需要比較來自原始和移植代碼的輸出,但數字格式化存在一個小問題。例如,而VB6代碼Write的只有我.5中,VB.NET代碼產生0.5,而不是.0005(原件)寫入5E-4

我怎樣才能讓VB.NET的Write,以相同的格式寫號作爲VB6?重構編寫代碼以包含格式化步驟的選項是不可接受的。

回答

4

在VB.NET中,您可以在Write/WriteLine調用中使用String.Format函數。

示例:在格式化的字符串

Console.WriteLine(String.Format("{0:c}", price)) 

的更多信息可以發現here

+2

順便說一下,'Console.WriteLine'已經有一個和String.Format一樣的重載。 – 2009-09-08 13:36:19

+0

謝謝,但代碼不寫入控制檯,它使用'FileSystem.WriteLine'例程寫入文件,它沒有格式化選項。 另外,將所有調用從'Write(handle,arg)'改爲Write(handle,String.Format(「{0:c}」,arg))'是最後一個選項,因爲我有太多'Write'和'WriteLine'調用。 – zzandy 2009-09-08 13:41:16

0
  • Write和WriteLine是通常與輸入和LineInput因此,所用的數據應該仍然能夠被讀取和寫入以同樣的方式。
  • 如果您這樣做是因爲輸出是針對第三方程序的,那麼您可能只需咬住子彈並使用簡單記錄的宏(Ctrl + Shift + R)進行搜索和替換,或者使用(Ctrl + Shift + R) H)。這些都不是很困難!
  • 歡迎來到.NET!當你說你從VB6移植到VB.NET這意味着使用新的概念和適應新的做事方法。只需運行內置升級程序,即可將而不是將移植到.NET!
  • 你可能會嘗試沿着Write(handle, arg.ToString("#.####"))而不是前面提到的String.Format調用。
  • 您沒有提及原因爲什麼您需要使用與之前相同的方式編寫的數據?
  • 重構代碼是不可接受的 ..... hrm ...小心解釋一個嗎? (如果只是懶惰,人們會聽。)
+0

將從20K行到VB.NET的解決方案轉換爲VB.NET並不像看起來那麼簡單,因此我稱之爲「移植」。 – zzandy 2010-03-10 08:50:11

+0

通過說*重構是不可接受的*我的意思是,我沒有時間去通過每個調用'Write'和'WriteLine'並將其改爲'Write(handle,arg.ToString(「#。## ##「))'獲得小的好處。 – zzandy 2010-03-10 08:52:55

+0

@zzandy - 不確定你的第一個評論的目的,但我已經將VB6項目移植到了.NET中。用Visual Studio錄製的宏可以在幾秒鐘內完成第二條評論。你有沒有在VS記錄宏? – 2010-03-10 13:44:07