IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> unity:处理string类型的时间(年月日),并判断时间先后 -> 正文阅读

[数据结构与算法]unity:处理string类型的时间(年月日),并判断时间先后

一、处理时间格式

1、格式

输入时间,string格式:“2021/12/30 17:59:25”;

输出一串数字,List<int>格式:{2021,12,30,17,59,25,00};

2、转化过程/使用到的方法思路

(1)Regex类(正则表达式),将string里的空格转为常见无干扰字符“,”;

(2)根据时间格式,将(“/“,“:”,“am”等)非数字相关的字符删去,或替换为“,”:

使用string.Replace(char A,char B);将字符串里的A字符替换为B字符;

a = a.Replace("/", ",");//斜杠替换为逗号
a = a.Replace("am", "");//删除am字符

(3)将字符串按指定要求进行分割成多个字段,并将分割后的字符放进数组中;

string[] newA = a.Split(',');//将a字符串,根据字符串里的“,”为分割点,分割

EG:a ="123,456,"? ?????????newA ={123,456};//数组中3个元素{123},{456},{}空字符串;

a根据逗号切割,最后“456,”,这里会分割成逗号前? 456? 和逗号后? 空字符 两个元素;

(4)判断字符是否为空,并将空格字符转化为不干扰数字大小的“00”;

string?newA =“”;

if (string.IsNullOrEmpty(newA)) newA = "00";

(5)字符转数字;

这里字符都是整数,比较简单直接转化为int类型:int x = int.Parse("8");

更多不同格式之间转化,可以看我之前一篇笔记:

C# 数据处理——(包括但不限)浮点数设置小数点后位数

(6)遍历数组,将string数组,转化为List<int>;

3、完整功能方法代码

    /// <summary>
    /// 处理string类型的time,并获得其int类型的list
    /// </summary>
    /// <param name="a">time格式:“2021/12/30 17:59:25”</param>
    /// <returns>返回格式“[2021,12,30,17,59,25]”</returns>
    private List<int> GetTimeList(string a)
    {
        List<int> listValue = new List<int>();
        a = Regex.Replace(a, @"\s", ",");//空格转换为“,”
        a = a.Replace(":", ",");
        a = a.Replace("/", ",");
        //a = a.Replace("am", "");//删除am字符
        string[] newA = a.Split(',');
        for (int i = 0; i < newA.Length; i++)
        {
            int index = i;
            if (string.IsNullOrEmpty(newA[index])) newA[index] = "00";
            listValue.Add(int.Parse(newA[index]));
        }
        return listValue;
    }

二、比较List<int>里的同下标的数字大小,判断时间先后

1、原理

(1)越靠近列表前面的数字越大,越接近最近时间/时间最新/最晚;

(2)这里精确到秒,判断时间先后时,基本不担心会有重复相同的。

比如:2021/12/30 17:59:25”;“2019/8/25 16:19:22”;“2019/8/25 16:39:22”;

转化为list后为:{2021,12,30,17,59,25,00}{2019,8,25,16,19,22,00}{2019,8,25,16,39,22,00}

其中:{2021,12,30,17,59,25,00},{2019,8,25,16,19,22,00}比较,

index=0位置上,一个是2021,一个是2019,直接判断2021的时间晚于2019;

{2019,8,25,16,19,22,00},{2019,8,25,16,39,22,00}比较;

前面年月日时对应的时间数字都相同{2019,8,25,16,},在分钟上,19小于39,可判断时间先后。

2、比较方法/思路

(1)基于上面将时间字符串转化为数字列表;

(2)从前往后比较数字List<int>对应下标的数字大小,只要判断出某个列表的值大于或小于另一个同下标里数字,即可判断出两个时间的先后顺序,数字大的时间对应于时间更晚;

1)先判断比较的两个时间对应的列表长度是否相同,不相同则以短的列表长度为之后遍历次数;

2)循环遍历同下标的两个list里的值是否相等;

(3)返回比较结果:true/false;

3、完整功能方法代码

    /// <summary>
    /// 判断时间a、b先后,时间是否先于b
    /// </summary>
    /// <param name="a">字符串a</param>
    /// <param name="b">字符串b</param>
    /// <returns></returns>
    private bool CompareString(string a, string b)
    {
        int isCompare = 0;
        List<int> aList = GetTimeList(a);
        List<int> bList = GetTimeList(b);
        int len = aList.Count <= bList.Count ? aList.Count : bList.Count;
        for (int i = 0; i < len; i++)
        {
            int index = i;
            if (aList[index] > bList[index]) isCompare = 1;
            if (aList[index] < bList[index]) isCompare = -1;
            if (isCompare != 0) break;
        }
        return (isCompare == -1) ? false : true;
    }

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:26:10  更:2022-06-01 15:27:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:57:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码