繁体   English   中英

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

[英]Extract version number from string(eg : “ver.1.9.0”)

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

我的意思是我将同时使用版本名称(vername)或仅版本(1.19.5)的两种格式

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

如果您愿意使用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);

干得好:

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

为什么要使生活变得更加艰难?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM