如果我传递一个字符串(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]);
}
答案 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]);