从字符串中提取版本号(例如:“ver.1.9.0”)

时间:2017-03-09 19:51:49

标签: c# c#-4.0

如果我传递一个字符串(verstring ==“vername.1.19.5”),它将返回该版本,因为我忽略了Currentver [0]。如果我想传递verstring ==“1.19.5”。

我的意思是我会在版本名称(vername)或仅版本(1.19.5)的两种格式中获得verstring

    public VerInfo(string verString)
    {
        string[] currentVer;

        if (versionString.Contains("."))
            currentVer= versionString.Split(".".ToCharArray());
        else
            currentVer= versionString.Split(":".ToCharArray());

        a= Convert.ToByte(currentVer[1]);
        b= Convert.ToByte(currentVer[2]);
        c= Convert.ToByte(currentVer[3]);
    }

3 个答案:

答案 0 :(得分:2)

如果您打开使用Regex,下面的答案可能会对您有所帮助:

var regexPattern = @"(?:ver\:)?(?<major>\d)[\.|\:](?<minor>\d)[\.|\:](?<revision>\d)";
var regex = new Regex(regexPattern);

var match = regex.Match("1:2.3");
var major = Convert.ToByte(match.Groups["major"].Value);
var minor = Convert.ToByte(match.Groups["minor"].Value);
var revision = Convert.ToByte(match.Groups["revision"].Value);

它使用正则表达式命名组来检索值版本。如果您愿意,可以通过a,b,c更改组名称作为正则表达式的一部分,您可以得到类似的结果:

var regexPattern = @"(?:ver\:)?(?<a>\d)[\.|\:](?<b>\d)[\.|\:](?<c>\d)";
var regex = new Regex(regexPattern);

var match = regex.Match("1:2.3");
var a = Convert.ToByte(match.Groups["a"].Value);
var b = Convert.ToByte(match.Groups["b"].Value);
var c = Convert.ToByte(match.Groups["c"].Value);

答案 1 :(得分:0)

你走了:

using System;
using System.Text.RegularExpressions;

namespace RegVer {
    class Prog {
        static void Main() {
            var verstring = "ver:1:9.5";
            var dotVerString = verstring.Replace(':','.');
            Console.WriteLine(Regex.Match(dotVerString, @"ver\.([\d\.]+)").Groups[1].Value);
        }
    }
}

或者如果你想要每个版本数字的数组。

using System;
using System.Text.RegularExpressions;

namespace RegVer {
    class Prog {
        static void Main() {
            var verstring = "ver:1:9.5";
            var VerABC = Regex.Matches(verstring, @"\d");
            Console.WriteLine("a = " + VerABC[0] + "\n" +
                              "b = " + VerABC[1] + "\n" +
                              "c = " + VerABC[2]);
        }
    }
}

答案 2 :(得分:0)

为什么要让生活更加艰难?

string v = verstring.Replace(':','.').Substring(5,verstring.Length);

现在您不需要关心它是否真的被:.分开,您可以简单地按.分割:

currentVer = v.Split('.');
a= Convert.ToByte(currentVer[1]);
b= Convert.ToByte(currentVer[2]);
c= Convert.ToByte(currentVer[3]);