解析线并将其分解为变量

时间:2016-01-07 02:05:46

标签: c# parsing

我有一个文本文件,其中只包含我需要提取的应用程序的完整版本号,然后将其解析为单独的变量。

例如,假设version.cs包含19.1.354.6

使用的代码I似乎不起作用:

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];

2 个答案:

答案 0 :(得分:1)

你的问题与文件有关,很可能它包含的是其他文本而不是版本,为什么不使用绝对适用于此类任务的Version类。

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

答案 1 :(得分:0)

如果输入正确,您所做的工作正常,因此我建议您确保您正在阅读的文件中没有其他内容。

将来,请提供错误信息,因为我们通常无法确切地告诉您预期会发生什么,只有我们知道应该发生的事情。

鉴于此,我还建议在将来使用Regex进行解析。在我看来,它为您的需求提供了更灵活的解决方案。以下是使用正则表达式的示例:

    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