首页 > 编程语言 >C#-实现对版本号的自动排序

C#-实现对版本号的自动排序

时间:2023-07-26 17:00:43浏览次数:40  
标签:int string 版本号 verList ++ C# Add Version 排序

前提是版本号都是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

相关文章

  • 苹果 macOS Ventura 13.5 正式发布,修复 Mac Pro 硬盘问题
    苹果今日向Mac电脑用户推送了macOS13.5更新(内部版本号:22G74),本次更新距离上次发布隔了32天。macOS13Ventura(苹果最新系统)v13.5正式版下载此次更新基本没有什么新功能。从苹果支持文档来看,主要修复了MacPro(2023)上SATA硬盘意外断开的问题,之前Mac从睡眠状态唤醒......
  • @mapper(componentModel = “spring”)
    在接口上使用该注解,可以自动生成该接口的实现类.实现DTO-DO各种模型之间的字段映射(不仅仅限制于DTO-DO)https://blog.csdn.net/qq_36937844/article/details/126848404......
  • 记录一次线上服务CPU飙高问题
    2023.07.2020:01:38线上一个服务发生了CPU过高的告警,看告警信息当前的CPU使用率已经达到了82.65%,问题已经很严重,赶紧开始排查起来。来复盘下如何排查这类问题,一、排查方法1、找到cpu过高的进程ID收到告警后,第一件事要做的就是找到CPU过高的程序的线程id(pid),可以使用jps或ps......
  • Delphi中URL的编码与解码;即urlencode的使用
    一、URL简介   URL是网页的地址,比如 ​​ ​http://www.shanhaiMy.com​​​。Web浏览器通过URL从web服务器请求页面。   由于URL字符串常常会包含非ASCII字符,URL在传输过程中,往往出现错误。因此,可以将非字符串字符,让一些特殊ASCII字符组合,代替非ASCII字符。这就......
  • Mac电脑如何重新安装 macOS系统
    Mac电脑在日常的使用中难免会出现一些问题,从而导致电脑需要重新安装系统。这时你可以使用电脑的内建恢复系统“macOS恢复”来重新安装Mac操作系统。不但简单快捷,而且重新安装后不会移除你的个人数据。macOS最新正式版系统下载将Mac关机选取苹果菜单>“关机”,然后等待M......
  • 使用 ifcfg 文件配置IP与辅助IP
    配置如下:[root@test-8c8gnetwork-scripts]#catifcfg-eth0#Createdbycloud-initoninstancebootautomatically,donotedit.#BOOTPROTO=noneDEFROUTE=yesDEVICE=eth0GATEWAY=192.168.121.1IPADDR=192.168.121.170NETMASK=255.255.255.0IPADDR2=192.168.121.1......
  • TypeScript小知识:遍历enum (暂时记录)
    enumBlockPrefab{  BLOCK2=0,  BLOCK4,  BLOCK8,  BLOCK16,  BLOCK32,  BLOCK64,  BLOCK128,  BLOCK256,  BLOCK512,  BLOCK1024,  BLOCK2048}letnum=BlockPrefab.BLOCK128;letsmth=BlockPrefab[num];let......
  • NC19981 [HAOI2010]软件安装
    NC19981[HAOI2010]软件安装一、题目描述现在我们的手头有\(N\)个软件,对于一个软件\(i\),它要占用\(W_i\)的磁盘空间,它的价值为\(V_i\)。我们希望从中选择一些软件安装到一台磁盘容量为\(M\)计算机上,使得这些软件的价值尽可能大(即\(V_i\)的和最大)。但是现在有个问题:软件之间存在......
  • 【垫底模拟】CSP模拟-6
    新系列,系列名叫垫底模拟,厉害吧T1排序最开始想的都是很简单的东西,就是把最大的数放到最后嘛,然后发现显然不行,比如说:hack:input:515324output:34252423题目很明显地告诉我们先输出逆序对数\(m\)再输出交换\(m\)行操作,这\(m\)次操作还必须针对我们求......
  • 前端之localStorage
    问题:同一个浏览器同时打开两个saas,发现localStorge共用同一个,相同key值的存储会相互覆盖原因:同一域名下,localStorage共享解决方法:不同saas使用不同的key下面介绍一下localStorage特性:1、永久存储,除非主动删除2、同一域名下可以多窗口共享3、键值对存储,方便管理使用:引入......