[英]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.