Yoko.Tool 1.5.8.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Yoko.Tool --version 1.5.8.1
NuGet\Install-Package Yoko.Tool -Version 1.5.8.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Yoko.Tool" Version="1.5.8.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Yoko.Tool --version 1.5.8.1
#r "nuget: Yoko.Tool, 1.5.8.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Yoko.Tool as a Cake Addin
#addin nuget:?package=Yoko.Tool&version=1.5.8.1

// Install Yoko.Tool as a Cake Tool
#tool nuget:?package=Yoko.Tool&version=1.5.8.1

懒人必备工具箱

💎 主要功能

❄ 雪花Id优化版

❄ 字符串拓展/效验(值类型转换、敏感信息掩码、效验、时间操作等)

❄ 哈希加密与验证

❄ 计算经纬度之间的距离

❄ 文件操作

❄ 时间段判断

❄ ·········

💎 使用方法

❄ 包管理器 Install-Package Yoko.Tool -Version 版本号

❄ .Net命令行 dotnet add package Yoko.Tool --version 版本号

💎 雪花ID

❄ 基于一般雪花算法,优化后生成的ID更短(15位起)、是整数(占用空间最多8字节)、速度更快。

❄ 新增预留位,支持服务器时间回拨。(比如服务器时间回拨1秒,也能自动适应生成临界时间的唯一ID)

💎 雪花参数设置

WorkerIdBitLength,机器码位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],实际上有些语言采用 无符号 ushort (uint16) 类型接收该参数,所以最大值是16,如果是采用 有符号 short (int16),则最大值为15。

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时,取其为真实最大序列数,一般无需设置,除非多机共享WorkerId分段生成ID(此时还要正确设置最小序列数)。

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();

🔍 手机号验证 .IsPhoneNumber();

🔍 本月有多少天 GetDaysOfMonth()

🔍 返回当前日期的星期名称 GetWeekNameOfDay()

🔍 返回时间差(N小时前,N分钟前···) DateDiff()

🔍 计算2个时间差(相差多少年月日时分秒) GetDiffTime()


💎 一般密码加密解密、验证

🔍 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 55 4/22/2024
2.6.0-rc.3 86 12/14/2023
2.6.0-rc.2 78 12/14/2023
2.6.0-rc.1 79 12/14/2023
2.5.4 163 5/22/2023
2.5.3 246 2/24/2023
2.5.2 412 9/7/2022
2.5.1 373 9/7/2022
2.5.0 372 9/5/2022
2.4.4 386 8/5/2022
2.4.3 389 8/2/2022
2.4.2 399 7/27/2022
2.4.1 388 7/25/2022
2.4.0 428 7/11/2022
2.2.0 415 6/20/2022
2.1.1 400 6/14/2022
2.1.0 411 5/7/2022
2.0.0 409 4/29/2022
1.6.3 416 6/14/2022
1.6.2.8 423 4/29/2022
1.6.2.7 441 4/21/2022
1.6.2.6 423 3/17/2022
1.6.2.4 292 12/17/2021
1.6.2.3 290 12/13/2021
1.6.2.2 270 12/2/2021
1.6.2.1 335 11/15/2021
1.6.2 315 11/2/2021
1.6.1.1 365 10/25/2021
1.6.1 316 10/22/2021
1.6.0.1 336 9/24/2021
1.6.0 315 9/17/2021
1.5.8.1 321 9/15/2021
1.5.7 529 9/10/2021
1.5.6 367 9/10/2021
1.5.5 345 9/9/2021
1.5.4 340 9/5/2021
1.5.3 319 9/3/2021
1.5.2 306 9/3/2021
1.5.1 321 9/3/2021
1.5.0 312 9/2/2021
1.4.3 321 9/2/2021
1.4.2 318 9/2/2021
1.4.1 309 9/2/2021
1.4.0 331 8/24/2021
1.3.0 321 8/24/2021