2011-11-23 54 views

回答

11

为什么要使用正则表达式?他们不执行比较。然而,不仅System.Version将解析字符串,但它支持的比较:

// Use your favorite comparison operator 
var current = new Version("4.0.1.2"); 
var found = new Version("4.0.1.0"); 
if (found > current) 
{ 
    Console.WriteLine("Upgrade needed to {0} from {1}", found, current); 
} 
else 
{ 
    Console.WriteLine("No upgraded needed from {0}", current); 
} 

或者,如果你在一个枚举有他们,它很好地使用LINQ:

var versions = new [] { "3.0.0.0", "3.1.0.0", "4.0.1.0", "4.0.1.2" }; 
foreach (var version in versions.Select(Version.Parse) 
           .OrderByDescending(v => v)) 
{ 
    Console.WriteLine("{0}", version); 
} 

// Group them by Major Version first, then sort 
foreach (var major in versions.Select(Version.Parse) 
           .GroupBy(v => v.Major) 
           .OrderByDescending(g => g.Key)) 
{ 
    Console.WriteLine("{0}: {1}", 
         major.Key, 
         String.Join(", ", major.OrderByDescending(v => v))); 
} 
0

尝试与这一个

static class Program 

{ 

static void Main() 

{ 

string v1 = "1.23.56.1487"; 
string v2 = "1.24.55.487"; 

var version1 = new Version(v1); 
var version2 = new Version(v2); 

var result = version1.CompareTo(version2); 
    if (result > 0) 
     Console.WriteLine("version1 is greater"); 
    else if (result < 0) 
     Console.WriteLine("version2 is greater"); 
    else 
     Console.WriteLine("versions are equal"); 
    return; 

} 

}

-4

那么版本号只是一个数字..比较3.0.0.0 & 3.1.0.0就像比较3000和3100一样最简单的是:

int v1 = 3000; 
int v2 = 3100; 

if (v2 > v1) { my routine; } 
+0

除版本为4.0.30319.1(当前C#编译器的版本号)外。 – user7116

+0

你没有提及与同一主要版本编号比较不同的版本!!!!!! –