2012-11-20 159 views
3

我想分割我當前的應用程序版本號,但是刪除了前導零。String.Split()刪除前導零

我該如何更改我的拆分,以不刪除前導零。

獲取currentVersionNo:

startUpAssembly.GetName().Version.ToString() 

所以對於測試:

string versionNo = "7.01.7000.0"; 

string[] versionInfo = versionNo.Split('.'); 

這將產生:

7 
1 //Here i need it to be 01 
7000 
0 

,我需要它不要刪除前導零。我如何實現這一目標?

也許有更好的解決方案,使用正則表達式?

+3

您的示例代碼不會編譯 - 7.01.7000.0不是字符串文字。 –

+1

...並在您添加雙引號後 - 它按預期工作。 – zerkms

+2

(我強烈懷疑這個問題與String.Split沒有任何關係......) –

回答

20

A System.Version不是一個任意的字符串 - 它是四個整數。前導零是不相關的,因此在轉換回字符串時不包括在內。這就是你丟失信息的地方 - 不在String.Split。你可以很容易看到這一點:

using System; 

class Test 
{ 
    static void Main() 
    { 
     Version version = new Version("7.01.7000.0"); 
     Console.WriteLine(version); // 7.1.7000.0 
    } 
} 

基本上,你的計劃是根本性的缺陷,你應該改變你的設計。您不應該嘗試使用來表示以「7.01.7000.0」開頭的版本。

此外,你應該退後一步,想想你的診斷過程:是什麼讓你認爲String.Split是在這裏責怪?爲什麼你不是第一步看startUpAssembly.GetName().Version.ToString()的結果?

+0

謝謝喬恩。我忽略了'Application.Current.GetType()。Assembly.GetName()。Version.ToString()'返回'7.1.7000.0'。 – Willem

+2

@Willem:好的 - 我只是建議你對你的診斷方法做一些反思,這讓你忽略了這一點。例如,你問題*中的代碼不會產生你所說的輸出,所以大概你沒有運行它。回顧這個特殊的例子可能會幫助你改進你的方法以解決未來的問題。 –