Sage.Data.Extensions 1.0.0.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package Sage.Data.Extensions --version 1.0.0.5
                    
NuGet\Install-Package Sage.Data.Extensions -Version 1.0.0.5
                    
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="Sage.Data.Extensions" Version="1.0.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Sage.Data.Extensions" Version="1.0.0.5" />
                    
Directory.Packages.props
<PackageReference Include="Sage.Data.Extensions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Sage.Data.Extensions --version 1.0.0.5
                    
#r "nuget: Sage.Data.Extensions, 1.0.0.5"
                    
#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.
#:package Sage.Data.Extensions@1.0.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Sage.Data.Extensions&version=1.0.0.5
                    
Install as a Cake Addin
#tool nuget:?package=Sage.Data.Extensions&version=1.0.0.5
                    
Install as a Cake Tool

Sage.Data.Extensions

NuGet License

简介

Sage.Data.Extensions 提供了一系列常用的数据类型扩展方法,简化了日常开发中的常见操作。该库设计为线程安全,并完全兼容 AOT 编译。

特性

  • 字符串扩展方法(判空、格式化、类型转换等)
  • 日期时间扩展方法(格式化、时间段计算等)
  • 字节数组扩展方法(编码转换、哈希计算等)
  • 整型和长整型扩展方法(范围检查、格式化等)
  • 线程安全设计
  • 完全兼容 AOT 编译

安装

dotnet add package Sage.Data.Extensions

使用示例

字符串扩展方法 (StringExtensions)

空值检查和默认值处理
// 判断字符串是否为空(null、空字符串或仅包含空白字符)
string text = "";
bool isEmpty = text.IsEmpty(); // 返回 true

string text2 = "  ";
bool isEmpty2 = text2.IsEmpty(); // 返回 true

string text3 = "Hello";
bool isEmpty3 = text3.IsEmpty(); // 返回 false

// 判断字符串是否为null或空字符串(不考虑空白字符)
string text4 = "  ";
bool isNullOrEmpty = text4.IsNullOrEmpty(); // 返回 false

// 设置默认值
string nullText = null;
string result = nullText.DefaultIfEmpty("N/A"); // 返回 "N/A"
类型转换
// 字符串转整数
string numText = "123";
int num = numText.ToInt(); // 返回 123

// 自动处理非数字字符
string mixedText = "a123b";
int num2 = mixedText.ToInt(); // 返回 123

// 转换失败时使用默认值
string invalidText = "abc";
int num3 = invalidText.ToInt(10); // 返回 10

// 转换为其他数值类型
string longText = "9876543210";
long longNum = longText.ToLong();

string shortText = "123";
short shortNum = shortText.ToShort();

字节数组扩展方法 (ByteExtensions)

编码转换
// 转换为Base64字符串
byte[] data = Encoding.UTF8.GetBytes("Hello World");
string base64 = data.ToBase64String(); // 返回 "SGVsbG8gV29ybGQ="

// 转换为十六进制字符串
byte[] bytes = { 0xFF, 0x00, 0xAB };
string hex = bytes.ToHexString(); // 返回 "FF00AB"
string hexLower = bytes.ToHexStringLower(); // 返回 "ff00ab"

// 转换为URL安全的Base64
byte[] urlData = Encoding.UTF8.GetBytes("Hello+World/=");
string urlSafe = urlData.ToUrlSafeBase64(); // 返回不含+、/和=的Base64字符串

// 转换为UTF-8字符串
byte[] utf8Bytes = Encoding.UTF8.GetBytes("Hello 世界");
string text = utf8Bytes.ToUtf8String(); // 返回 "Hello 世界"
哈希计算
// 计算HMAC-SHA1
byte[] data = Encoding.UTF8.GetBytes("重要数据");
string key = "secret-key";
byte[] hmacBytes = data.ToHmacSha1(key);

// 转换为Base64用于存储或传输
string signature = Convert.ToBase64String(hmacBytes);

日期时间扩展方法 (DateTimeExtensions)

友好格式化
// 根据与当前日期的关系格式化日期
DateTime now = DateTime.Now;
string formatted = now.ToFriendlyDateString(); // 返回如 "14:30"

DateTime yesterday = DateTime.Now.AddDays(-1);
string formatted2 = yesterday.ToFriendlyDateString(); // 返回如 "12日 14:30"

// 日志格式化
string logTime = now.ToLogFormat(); // 返回 "2023-12-20 14:30:45"
string logTimeWithMs = now.ToLogFormat(true); // 返回 "2023-12-20 14:30:45.123"
日期计算
// 获取日期的开始和结束时间
DateTime date = DateTime.Now;
DateTime dayStart = date.StartOfDay(); // 返回当天 00:00:00.000
DateTime dayEnd = date.EndOfDay(); // 返回当天 23:59:59.999

// 获取周、月、季度、年的开始和结束
DateTime weekStart = date.StartOfWeek(); // 返回本周一 00:00:00.000
DateTime monthStart = date.StartOfMonth(); // 返回本月1日 00:00:00.000
DateTime monthEnd = date.EndOfMonth(); // 返回本月最后一天 23:59:59.999
DateTime quarterStart = date.StartOfQuarter(); // 返回本季度第一天 00:00:00.000
DateTime yearStart = date.StartOfYear(); // 返回本年1月1日 00:00:00.000

// 工作日判断
bool isWorkday = date.IsWeekday(); // 如果是周一至周五返回true
bool isWeekend = date.IsWeekend(); // 如果是周六或周日返回true

// 日期差异计算
DateTime futureDate = DateTime.Now.AddDays(10);
int daysUntil = DateTime.Now.DaysUntil(futureDate); // 返回10

// Unix时间戳转换
long timestamp = date.ToUnixTimestamp(); // 返回Unix时间戳(秒)
long timestampMs = date.ToUnixTimestampMs(); // 返回Unix时间戳(毫秒)

整型扩展方法 (IntExtensions)

范围检查和限制
// 判断数值是否在指定范围内
int age = 25;
bool isAdult = age.Between(18, 100); // 返回 true

// 限制数值在指定范围内
int score = 150;
int clampedScore = score.Clamp(0, 100); // 返回 100

int volume = -5;
int safeVolume = volume.Clamp(0, 100); // 返回 0
时间转换
// 将整数转换为TimeSpan
int timeout = 30; // 30秒
TimeSpan timeoutSpan = timeout.Seconds();

int cacheMinutes = 15;
TimeSpan expiry = cacheMinutes.Minutes();

int sessionHours = 2;
TimeSpan session = sessionHours.Hours();

int retentionDays = 30;
TimeSpan retention = retentionDays.Days();
数值格式化和判断
// 转换为二进制和十六进制字符串
int number = 10;
string binary = number.ToBinary(); // 返回 "1010"

int color = 255;
string hex = color.ToHexString(); // 返回 "FF"
string hexLower = color.ToHexString(false); // 返回 "ff"

// 判断奇偶性
int value = 42;
bool isEven = value.IsEven(); // 返回 true
bool isOdd = value.IsOdd(); // 返回 false

// 重复执行操作
var items = new List<string>();
5.Times(i => items.Add($"Item {i + 1}")); // 添加5个项目到列表

长整型扩展方法 (LongExtensions)

文件大小格式化
// 格式化文件大小
long fileSize = 1536; 
string size1 = fileSize.ToFileSizeString(); // 返回 "1.50 KB"
string size2 = fileSize.ToFileSizeString(0); // 返回 "2 KB"

long largeSize = 1073741824; 
string size3 = largeSize.ToFileSizeString(); // 返回 "1.00 GB"
时间戳转换
// Unix时间戳转换为DateTime
long timestamp = 1609459200; // 2021-01-01 00:00:00 UTC
DateTime date = timestamp.FromUnixTimestamp(); 

// 毫秒时间戳转换
long timestampMs = 1609459200000; // 2021-01-01 00:00:00.000 UTC
DateTime dateMs = timestampMs.FromUnixTimestampMs();
其他操作
// 范围检查和限制
long score = 85;
bool isPassing = score.Between(60, 100); // 返回 true

long value = 150;
long clampedValue = value.Clamp(0, 100); // 返回 100

// 毫秒转TimeSpan
long duration = 5000; // 5秒
TimeSpan timeSpan = duration.ToTimeSpan();

// 判断奇偶性
long number = 42;
bool isEven = number.IsEven(); // 返回 true
bool isOdd = number.IsOdd(); // 返回 false

许可证

本项目采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。

贡献

欢迎提交问题报告和改进建议。如果您想贡献代码,请提交拉取请求。

作者

  • LiuPengLai - 甲壳虫科技 欢迎提交问题和功能请求。 QQ Group: 1054304346
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Sage.Data.Extensions:

Package Downloads
Sage.CloudStorage.Qiniu

Sage.CloudStorage.Qiniu 是一个基于 .NET 平台的现代化七牛云存储 SDK,采用完全异步设计,提供了对七牛云对象存储、CDN 等服务的简单易用的 API 封装。该库基于 Sage.Http 构建,具有高性能、可扩展的七牛云服务访问能力,特别适合企业级应用和大文件处理场景。 ## 核心优势 - **现代化API设计**:完全异步,符合.NET最佳实践 - **模块化架构**:各组件职责明确,易于扩展和维护 - **丰富的事件机制**:提供上传进度通知和完成事件 - **智能上传策略**:自动选择最佳上传方式和分片大小 - **完善的错误处理**:提供详细的错误信息和恢复机制 ## 功能特性 - **完整的对象存储支持**:上传、下载、管理、删除等操作 - **高级上传功能**: - 智能分片上传(自动优化分片大小) - 断点续传支持 - 并发控制 - 实时进度监控 - **CDN管理**:刷新、预取、带宽查询、日志下载 - **数据处理**:图片处理、音视频转码等 - **批量操作**:批量上传、删除等

Sage.Encryption

Sage.Encryption 提供了加密和解密功能,支持多种加密算法,支持Windows安全存储等。 - AES 加密/解密 - AES-GCM 加密/解密 - Windows 安全数据存储 - 同步和异步 API - 完全兼容 AOT 编译

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0.7 33 9/28/2025
1.0.0.6 36 9/27/2025
1.0.0.5 89 9/26/2025
1.0.0.4 204 8/24/2025
1.0.0.3 174 8/24/2025
1.0.0.2 166 8/24/2025
1.0.0.1 117 7/28/2025
1.0.0 136 7/16/2025

新增字典扩展