前提是版本号都是Vxx.xx.xx.xx....的格式,xx代表数字,不能有除V以外其他字母
记录两种比较方法,一种是vs自带的Version类,一种是自己写的,根据比较结果,使用冒泡排序进行排序。
先给出一堆乱序的版本号:
List<string> verList; private void InitVersion() { verList = new List<string>(); verList.Add("V1.2.32.1"); verList.Add("V1.2.2.12"); verList.Add("V1.4.3.2"); verList.Add("V1.1.33.21"); verList.Add("V1.0.3.2"); verList.Add("V1.2.6.14"); verList.Add("V1.3.3.2"); verList.Add("V1.1.4.2"); }
【Version方式】使用冒泡排序进行排序:
private void SortVersion() { for (int i = 0; i < verList.Count - 1; i++) { for (int j = 0; j < verList.Count - 1 - i; j++) { Version v1 = new Version(verList[j].Replace("V", "")); Version v2 = new Version(verList[j + 1].Replace("V", "")); if (v1.CompareTo(v2) > 0) { string temp = verList[j]; verList[j] = verList[j + 1]; verList[j + 1] = temp; } } } }
【自己写的方法】比较两个版本大小,返回判断结果:
private bool IsV2UpToV1(string v1, string v2) { string[] str1 = v1.Replace("V", "").Split('.'); string[] str2 = v2.Replace("V", "").Split('.'); bool isHigh = false; for (int j = 0; j < Math.Max(str1.Length, str2.Length); j++) { if (str2.Length <= j) break; if (str1.Length <= j ) { isHigh = true; break; } if (Convert.ToInt16(str2[j]) == Convert.ToInt16(str1[j])) continue; isHigh = Convert.ToInt16(str2[j]) > Convert.ToInt16(str1[j]); break; } return isHigh; }
使用冒泡排序进行排序:
private void SortVersion() { for (int i = 0; i < verList.Count - 1; i++) { for (int j = 0; j < verList.Count - 1 - i; j++) { if (!IsV2UpToV1(verList[j], verList[j + 1])) { string temp = verList[j]; verList[j] = verList[j + 1]; verList[j + 1] = temp; } } } }
运行程序:
标签:int,string,版本号,verList,++,C#,Add,Version,排序 From: https://www.cnblogs.com/cfsl/p/17580761.html