Yoko.Tool
1.6.0
See the version list below for details.
dotnet add package Yoko.Tool --version 1.6.0
NuGet\Install-Package Yoko.Tool -Version 1.6.0
<PackageReference Include="Yoko.Tool" Version="1.6.0" />
paket add Yoko.Tool --version 1.6.0
#r "nuget: Yoko.Tool, 1.6.0"
// Install Yoko.Tool as a Cake Addin #addin nuget:?package=Yoko.Tool&version=1.6.0 // Install Yoko.Tool as a Cake Tool #tool nuget:?package=Yoko.Tool&version=1.6.0
懒人必备工具箱
💎 主要功能
❄ 雪花Id优化版
❄ 字符串拓展/效验(值类型转换、敏感信息掩码、效验、时间操作等)
❄ 值判断
❄ 随机数
❄ 哈希加密与验证
❄ 计算经纬度之间的距离
❄ 文件操作
❄ 时间段判断
❄ ·········
💎 雪花ID
❄ 基于一般雪花算法,优化后生成的ID更短(15位起)、是整数(占用空间最多8字节)、速度更快。
❄ 新增预留位,支持服务器时间回拨。(比如服务器时间回拨1秒,也能自动适应生成临界时间的唯一ID)
💎 雪花参数设置
❄ WorkerIdBitLength,机器码位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19]
❄ WorkerId,机器码,最重要参数,无默认值,必须 全局唯一,必须 程序设定,缺省条件(WorkerIdBitLength取默认值)时最大值63,理论最大值 2^WorkerIdBitLength-1
特别提示:如果一台服务器部署多个独立服务,需要为每个服务指定不同的 WorkerId。
❄ SeqBitLength,序列数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒基础生成的ID个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。
❄ MinSeqNumber,最小序列数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。
❄ MaxSeqNumber,最大序列数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,真实最大序列数取最大值(2^SeqBitLength-1),不为0时,取其为真实最大序列数
❄ BaseTime,基础时间,有默认值(2021年),是毫秒时间戳(是整数,DatetTime类型),作用是:用生成ID时的系统时间与基础时间的差值(毫秒数)作为生成ID的时间戳。
💎 调用示例
1、全局初始化
NetCore/Net5,引用using Yoko.Tool;在Startup.cs(ConfigureServices)中全局注入
//全局初始化IdGenerator
YokoId.SetIdGenerator(new IdGeneratorOptions(1));
// 初始化过程只需全局一次,且必须在第2步之前设置。
2、生成ID
var newId = YokoId.NextId();
💎 字符串拓展/效验:值类型转换、敏感信息掩码、效验、时间操作
🔍 object、string、decimal、double 转 int "123".ToInt32()
🔍 object、string 转 bool .ToBool()
🔍 object、string 转 long .ToLong()
🔍 object、string、decimal、int 转 double .ToDouble()
🔍 object、string 、double、int 转 decimal .ToDecimal()
🔍 object 转 float .ToFloat()
🔍 字符串 转 时间 .ToDateTime()
🔍 分割逗号的字符串为List[]、string[] .SplitCsv()
🔍 分割逗号的字符串为int[] .SplitCsvToInt()
🔍 string数组转int数组 .ToIntList()
🔍 过滤字符串中的/n,/t,/r .ToJsonString()
🔍 替换字符串中的"为',一般用于写入数据库的json .ToDataBaseString()
🔍 去除图片地址中的不正常字符\n、\ .ToImgString()
🔍 DateTime转换成开始时间00:00:00 .ToStartTime()
🔍 DateTime转换成结束时间23:59:59 .ToEndTime()
🔍 DateTime时间转Unix时间戳(默认精确到毫秒13位) .ToUnixTime();
🔍 DateTime时间转Unix时间戳(默认精确到秒10位) .ToUnixTimeS();
🔍 Unix时间戳转DateTime本地时间(yyyy/MM/dd hh:MM:ss) .ToLocalTime();
🔍 转换成字节数组 .ToByteArray();
🔍 将一个对象转为Json格式字符串 .ToJson();
🔍 将Json转为一个动态类型(运行时解析) .ToDynamic();
🔍 普通字符串敏感信息掩码 .ToMask();
🔍 邮箱敏感信息掩码 .ToMaskEmail();
🔍 本月有多少天 GetDaysOfMonth()
🔍 返回当前日期的星期名称 GetWeekNameOfDay()
🔍 返回时间差(N小时前,N分钟前···) DateDiff()
🔍 计算2个时间差(相差多少年月日时分秒) GetDiffTime()
💎 值判断
🔍 在范围? IsInRange 、 IsInRange 、 IsIn 、IsContainsIn
int num = 50;
if (num.IsInRange(100, 1000)) { }
string value = "a";
if (value.IsIn("a", "b", "c")) { }
🔍 是null或""? IsNullOrEmpty
🔍 有值?(与IsNullOrEmpty相反) IsValuable
🔍 是零? IsZero
🔍 是Int? IsInt
🔍 不是Int? IsNoInt
🔍 是金钱? IsMoney
🔍 是时间? IsDate
🔍 是邮箱? IsDate
🔍 是手机号? IsMobile 、 IsPhoneNumber 、
🔍 是座机? IsTelephone
🔍 是身份证? IsIDcard
🔍 是传真? IsFax
🔍 是适合正则匹配? IsMatch
🔍 是true?false? IsTrue 、 IsFalse
💎 随机数
🔍 按照年月时分秒随机数生成的文件名 YokoRandom.GetFileRndName();
🔍 生成随机数字 YokoRandom.GetFormatedNumeric(1, 100);
🔍 生成随机汉字 YokoRandom.GetRandChinese(6);
🔍 根据指定的样式生成:"?"代表一个字符,"#"代表一个一位数字,"*"代表一个字符串或一个一位数字 YokoRandom.GetRandStringByPattern(@"##??*");
🔍 获取指定长度的纯字母随机字符串 YokoRandom.GetRandWord(10);
🔍 获取指定长度的随机字符串 YokoRandom.GetRandomString(10);
💎 一般密码加密解密、验证
🔍 MD5加密 "123456".ToMD5();
🔍 MD5加密加盐 "123456".ToMD5("yoko123");
🔍 MD5两次加密 "123456".ToMD5Double();
🔍 MD5两次加密加盐 "123456".ToMD5Double("yoko123");
🔍 AES加密(密钥) "123456".ToAES();
🔍 AES解密(密钥) "123456".ToAESDecrypt();
🔍 DES加密(密钥) "123456".ToDES();
🔍 DES解密(密钥) "123456".ToDESDecrypt();
🔍 RSA加密解密
//生成RSA密钥对
RsaKey rsaKey = RsaCrypt.GenerateRsaKeys();
//公钥加密
string encrypt = "123456".RSAEncrypt(rsaKey.PublicKey);
//私钥解密
string s = encrypt.RSADecrypt(rsaKey.PrivateKey);
🔍 生成加密密码 "123456".ToPassWord("是否明文");
🔍 验证密码 "目标比对密码".IsTrue("输入的密码");
* MD5+哈希。生成密码由5部分组成
💧 标识头:cadre
💧 迭代:64000
💧 哈希大小:18
💧 salt值
💧 哈希值
* 值表现为 ` cadre:64000:18:salt值:哈希值 `
💎 经纬度操作
🔍 根据经纬度计算两点间距离 YokoLngLat.GetDistance(x1,y1,x2,y2);
💎 文件操作
🔍 解压rar文件 YokoFile.UnRar('rar文件','解压到哪?')
💎 时间段判断
🔍 判断是否在某个时间段内、是否包含某个时间段、两个时间段是否相交、连接两个时间段
var range = new DateTimeRange("2021-9-3", "2021-9-5".ToDateTime());
//连接两个时间段,结果:2021-9-3~2021-9-6
range.Union("2021-9-4".ToDateTime(), "2021-9-6".ToDateTime());
//判断是否在某个时间段内,true
range.In("2021-9-3".ToDateTime(), "2021-9-6".ToDateTime());
//两个时间段是否相交,(true,2021-9-3~2021-9-4)
var (intersected,range2) = range.Intersect("2021-9-4".ToDateTime(), "2021-9-6".ToDateTime());
//判断是否包含某个时间段,true
range.Contains("2021-9-3".ToDateTime(), "2021-9-4".ToDateTime());
·····等等
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.1
- Newtonsoft.Json (>= 13.0.1)
- SharpCompress (>= 0.29.0)
-
.NETFramework 4.7.2
- Newtonsoft.Json (>= 13.0.1)
- SharpCompress (>= 0.29.0)
-
.NETFramework 4.8
- Newtonsoft.Json (>= 13.0.1)
- SharpCompress (>= 0.29.0)
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.1)
- SharpCompress (>= 0.29.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
3.0.0-beta.1 | 70 | 4/22/2024 | |
2.6.0-rc.3 | 100 | 12/14/2023 | |
2.6.0-rc.2 | 89 | 12/14/2023 | |
2.6.0-rc.1 | 97 | 12/14/2023 | |
2.5.4 | 180 | 5/22/2023 | |
2.5.3 | 272 | 2/24/2023 | |
2.5.2 | 436 | 9/7/2022 | |
2.5.1 | 383 | 9/7/2022 | |
2.5.0 | 398 | 9/5/2022 | |
2.4.4 | 412 | 8/5/2022 | |
2.4.3 | 418 | 8/2/2022 | |
2.4.2 | 410 | 7/27/2022 | |
2.4.1 | 398 | 7/25/2022 | |
2.4.0 | 439 | 7/11/2022 | |
2.2.0 | 439 | 6/20/2022 | |
2.1.1 | 412 | 6/14/2022 | |
2.1.0 | 439 | 5/7/2022 | |
2.0.0 | 420 | 4/29/2022 | |
1.6.3 | 442 | 6/14/2022 | |
1.6.2.8 | 451 | 4/29/2022 | |
1.6.2.7 | 471 | 4/21/2022 | |
1.6.2.6 | 437 | 3/17/2022 | |
1.6.2.4 | 321 | 12/17/2021 | |
1.6.2.3 | 312 | 12/13/2021 | |
1.6.2.2 | 294 | 12/2/2021 | |
1.6.2.1 | 361 | 11/15/2021 | |
1.6.2 | 345 | 11/2/2021 | |
1.6.1.1 | 375 | 10/25/2021 | |
1.6.1 | 342 | 10/22/2021 | |
1.6.0.1 | 361 | 9/24/2021 | |
1.6.0 | 343 | 9/17/2021 | |
1.5.8.1 | 347 | 9/15/2021 | |
1.5.7 | 539 | 9/10/2021 | |
1.5.6 | 392 | 9/10/2021 | |
1.5.5 | 369 | 9/9/2021 | |
1.5.4 | 365 | 9/5/2021 | |
1.5.3 | 344 | 9/3/2021 | |
1.5.2 | 334 | 9/3/2021 | |
1.5.1 | 346 | 9/3/2021 | |
1.5.0 | 336 | 9/2/2021 | |
1.4.3 | 352 | 9/2/2021 | |
1.4.2 | 327 | 9/2/2021 | |
1.4.1 | 319 | 9/2/2021 | |
1.4.0 | 356 | 8/24/2021 | |
1.3.0 | 348 | 8/24/2021 |