2016-01-07 54 views
-4

我有一個僅包含我需要提取,然後將其解析成獨立變量的應用程序的完整版本號的文本文件。剖析行並分解成變量

例如可以說version.cs包含我使用似乎並不奏效19.1.354.6

代碼:

char[] delimiter = { '.' }; 
string currentVersion = System.IO.File.ReadAllText(@"C:\Applicaion\version.cs"); 
string[] partsVersion; 
partsVersion = currentVersion.Split(delimiter); 
string majorVersion = partsVersion[0]; 
string minorVersion = partsVersion[1]; 
string buildVersion = partsVersion[2]; 
string revisVersion = partsVersion[3]; 
+1

你遇到什麼問題?你的意思是不工作?有什麼異常? – User2012384

+0

如果我用'「19.1.354.6」'替換'System.IO.File.ReadAllText(@「C:\ Applicaion \ version.cs」)'',那麼你的代碼工作正常。該文件必須與「19.1.354.6」'不同。 – Enigmativity

+4

具有確切文本「19.1.354.6」的文件不是有效的C#程序,所以我懷疑該文件中有更多。 –

回答

0

這是非常可行的。下面是我颳起了你工作示例:編碼

using System; 

// The contents of your file 
var contents = "19.1.354.6"; 

// A List<string> of the differnt version types 
var pieces = contents.Split('.'); 

// Variables to hold the versions separatly 
var majorVersion = pieces[0]; 
var minorVersion = pieces[1]; 
var buildVersion = pieces[2]; 
var revisVersion = pieces[3]; 

// Write values to the console (not needed) 

Console.WriteLine("Major Version: {0}", majorVersion); 
Console.WriteLine("Minor Version: {0}", minorVersion); 
Console.WriteLine("Build Version: {0}", buildVersion); 
Console.WriteLine("Revision Version: {0}", revisVersion); 

// Outputs: 

// Major Version: 19 
// Minor Version: 1 
// Build Version: 354 
// Revision Version: 6 

快樂:)

編輯:這很可能是你的「的.cs'文件的內容是不是你所期望的是什麼。你認爲(或者更確切地說,希望)它是「19.1.354.6」,但它很可能是其他的東西。你可以很容易地檢查,看它是否真的是你認爲它是寫的內容輸出到控制檯:

// Read contents of file 
var contents = System.IO.File.ReadAllText(@"C:\Applicaion\version.cs"); 

// Write contents to console 
Console.WriteLine(content); 
+0

找出問題,並感謝您的迴應。 –

1

Altough你的問題是與文件,最有可能包含其他文本不是一個版本,爲什麼不要使用絕對用於這類任務的Version類。

var version = new Version("19.1.354.6"); 
var major = version.Major; // etc.. 
+0

這是如何解決文件的問題? –

+0

我不知道Version類。每天學習新的東西:) +1 –

+0

這使得我的解決方案看起來很平凡,+1爲你 –

0

你對正確的輸入工作正常,所以我建議確保你正在閱讀的文件中沒有其他內容。

在未來,請提供錯誤信息,因爲我們通常不能告訴你希望發生什麼,只是我們知道應該發生。

在的光,我也建議尋找到使用正則表達式爲將來解析。在我看來,它爲您的需求提供了更靈活的解決方案。下面是正則表達式的例子使用:

var regex = new Regex(@"([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9])"); 
    var match = regex.Match("19.1.354.6"); 
    if (match.Success) 
    { 
     Console.WriteLine("Match[1]: "+match.Groups[1].Value); 
     Console.WriteLine("Match[2]: "+match.Groups[2].Value); 
     Console.WriteLine("Match[3]: "+match.Groups[3].Value); 
     Console.WriteLine("Match[4]: "+match.Groups[4].Value); 
    } 
    else 
    { 
     Console.WriteLine("No match found"); 
    } 

其輸出以下:

// Match[1]: 19 
// Match[2]: 1 
// Match[3]: 354 
// Match[4]: 6 
+0

找出問題..添加到原始問題的評論..謝謝你的建議.. –