当前位置:首页 > 代码笔记

个人专属 .NET 8 通用工具库 — 开发使用文档

大猫22小时前代码笔记10
摘要:dm98 工具库使用文档(最终完整版).NET 8 自用工具库(私人定制版“精易模块”),适配 AI 对接、文本/小说生成、关键词标题处理、网站开发、爬虫、SQLite+Dapper 操作、Edge TTS、Edge 翻译,全程贴合易语言使用习惯,简单顺手、终生维护。 一、库信息 库标识:dm9…

dm98 工具库使用文档

1. 概述

dm98 是一个基于 .NET 8 的综合性工具库,提供了多种常用功能模块,包括字符串处理、JSON 操作、文本处理、文件操作、加密操作、时间操作、数据校验、网络请求、翻译、语音合成和大模型调用等。

2. 模块列表

模块名称 主要功能 文件位置
DmString 字符串扩展方法 dm98/DmString.cs
DmJson JSON 操作 dm98/DmJson.cs
DmText 文本处理 dm98/DmText.cs
DmFile 文件操作 dm98/DmFile.cs
DmCrypto 加密操作 dm98/DmCrypto.cs
DmTime 时间操作 dm98/DmTime.cs
DmValidate 数据校验 dm98/DmValidate.cs
DmHttp 网络请求 dm98/DmHttp.cs
EdgeTranslator 翻译功能 dm98/DmTranslate.cs
DmTTS 语音合成 dm98/DmTTS.cs
DmAI 大模型调用 dm98/DmAI.cs
DmConfig 配置管理 dm98/DmConfig.cs
DmDB 数据库操作 dm98/DmDB.cs

3. 详细使用方法

3.1 DmString 字符串扩展

方法列表

  • IsEmpty(): 判断字符串是否为空/空白
  • TrimAll(): 去除所有空格、换行、制表符
  • Cut(int maxLength): 截取指定长度,超出部分用…代替
  • Between(string start, string end): 提取两个字符串之间的内容
  • Left(string end): 提取从开始到指定字符串的内容
  • Right(string start): 提取从指定字符串到结束的内容
  • LineCount(): 统计行数
  • GetLine(int index): 获取指定行的内容
  • RemoveHtml(): 移除 HTML 标签
  • ClearEmptyLines(): 清理空行

使用示例

using dm98;

string text = "  Hello, World!\n\nThis is a test.  ";

// 判断是否为空
bool isEmpty = text.IsEmpty(); // false

// 去除所有空白
string trimmed = text.TrimAll(); // "Hello,World!Thisisatest."

// 截取长度
string cut = text.Cut(10); // "  Hello, W..."

// 提取中间内容
string between = text.Between("Hello, ", "!"); // "World"

// 统计行数
int lines = text.LineCount(); // 2

// 获取指定行
string line = text.GetLine(2); // "This is a test.  "

3.2 DmJson JSON 操作

方法列表

  • Serialize(object obj): 序列化对象为 JSON 字符串
  • Deserialize<T>(string json): 反序列化为指定类型
  • Dynamic(string json): 动态访问 JSON
  • GetPath(string json, string path): 根据路径获取值
  • IsValid(string json): 判断 JSON 是否有效

使用示例

using dm98;

// 序列化
var obj = new { Name = "Test", Age = 18 };
string json = DmJson.Serialize(obj); // {"Name":"Test","Age":18}

// 反序列化
var deserialized = DmJson.Deserialize<dynamic>(json);
string name = deserialized.Name; // "Test"

// 动态访问
dynamic dynamicJson = DmJson.Dynamic(json);
int age = dynamicJson.Age; // 18

// 根据路径获取值
string nameValue = DmJson.GetPath(json, "Name"); // "Test"

// 判断是否有效
bool isValid = DmJson.IsValid(json); // true

3.3 DmText 文本处理

方法列表

  • Clean(string text): 清理文本(去除多余空白)
  • Paragraphs(string text): 提取段落
  • Keywords(string text, int count): 提取关键词
  • Title(string text): 标题处理
  • WordCount(string text): 统计词数
  • SafeName(string name): 安全文件名

使用示例

using dm98;

string text = "第一章 开始\n\n这是第一章的内容。\n\n第二章 发展\n\n这是第二章的内容。";

// 清理文本
string cleaned = DmText.Clean(text); // "第一章 开始 这是第一章的内容。 第二章 发展 这是第二章的内容。"

// 提取段落
var paragraphs = DmText.Paragraphs(text); // 4个段落

// 提取关键词
var keywords = DmText.Keywords(text, 3); // ["第一章", "开始", "这是第一章的内容"]

// 标题处理
string title = DmText.Title("  测试  标题  "); // "测试 标题"

// 统计词数
int wordCount = DmText.WordCount(text); // 32

// 安全文件名
string safeName = DmText.SafeName("test/file?name.txt"); // "test_file_name.txt"

3.4 DmFile 文件操作

方法列表

  • Read(string path): 读取文件内容
  • Write(string path, string content): 写入文件
  • Append(string path, string content): 追加内容
  • CreateDir(string path): 创建目录
  • Delete(string path): 删除文件
  • FileSize(string path): 获取文件大小
  • SaveBytes(byte[] bytes, string path): 保存字节数组

使用示例

using dm98;

// 写入文件
bool writeResult = DmFile.Write("test.txt", "Hello, DmFile!");

// 读取文件
string content = DmFile.Read("test.txt"); // "Hello, DmFile!"

// 追加内容
bool appendResult = DmFile.Append("test.txt", "\nAppend test");

// 获取文件大小
long fileSize = DmFile.FileSize("test.txt");

// 删除文件
bool deleteResult = DmFile.Delete("test.txt");

3.5 DmCrypto 加密操作

方法列表

  • MD5Encrypt(string text): MD5 加密(小写)
  • SHA256Encrypt(string text): SHA256 加密
  • AESEnc(string text, string key): AES 加密
  • AESDec(string text, string key): AES 解密
  • Random(int len): 生成随机字母数字串

使用示例

using dm98;

string text = "test123";
string key = "secretkey";

// MD5 加密
string md5 = DmCrypto.MD5Encrypt(text); // "cc03e747a6afbbcbf8be7668acfebee5"

// SHA256 加密
string sha256 = DmCrypto.SHA256Encrypt(text);

// AES 加密
string encrypted = DmCrypto.AESEnc(text, key);

// AES 解密
string decrypted = DmCrypto.AESDec(encrypted, key); // "test123"

// 生成随机字符串
string random = DmCrypto.Random(10); // 10位随机字符串

3.6 DmTime 时间操作

方法列表

  • Now(): 获取当前时间
  • ToStamp(DateTime dt): 转为秒级时间戳
  • FromStamp(long ts): 时间戳转回 DateTime
  • Date(DateTime dt): 格式化为 yyyy-MM-dd
  • FormatDateTime(DateTime dt): 格式化为 yyyy-MM-dd HH:mm:ss
  • DayDiff(DateTime end): 计算与目标时间的相差天数
  • MinDiff(DateTime end): 计算与目标时间的相差分钟数

使用示例

using dm98;

// 获取当前时间
DateTime now = DmTime.Now();

// 转为时间戳
long stamp = DmTime.ToStamp(now);

// 时间戳转回
DateTime fromStamp = DmTime.FromStamp(stamp);

// 格式化日期
string date = DmTime.Date(now); // "2024-01-01"

// 格式化日期时间
string dateTime = DmTime.FormatDateTime(now); // "2024-01-01 12:00:00"

// 计算天数差
int dayDiff = DmTime.DayDiff(now.AddDays(1)); // 1

// 计算分钟差
int minDiff = DmTime.MinDiff(now.AddMinutes(30)); // 30

3.7 DmValidate 数据校验

方法列表

  • IsUrl(string url): 判断是否为有效网址
  • IsPhone(string phone): 判断是否为手机号
  • IsEmail(string email): 判断是否为邮箱
  • IsImg(string ext): 判断是否为图片格式
  • IsVideo(string ext): 判断是否为视频格式
  • LenIn(string text, int min, int max): 判断文本长度是否在指定区间

使用示例

using dm98;

// 验证网址
bool isUrl = DmValidate.IsUrl("https://www.example.com"); // true

// 验证手机号
bool isPhone = DmValidate.IsPhone("13812345678"); // true

// 验证邮箱
bool isEmail = DmValidate.IsEmail("test@example.com"); // true

// 验证图片格式
bool isImg = DmValidate.IsImg(".jpg"); // true

// 验证视频格式
bool isVideo = DmValidate.IsVideo(".mp4"); // true

// 验证长度
bool lenIn = DmValidate.LenIn("test", 2, 5); // true

3.8 DmHttp 网络操作

方法列表

  • GetAsync(string url, Dictionary<string, string> headers = null): GET 请求
  • PostJsonAsync(string url, object data, Dictionary<string, string> headers = null): POST JSON 请求
  • PostFormAsync(string url, Dictionary<string, string> formData, Dictionary<string, string> headers = null): POST 表单请求
  • HtmlAsync(string url, Dictionary<string, string> headers = null): 获取网页源码
  • DownloadAsync(string url, string savePath, Dictionary<string, string> headers = null): 下载文件
  • SetTimeout(int milliseconds): 设置全局超时时间
  • AddDefaultHeader(string name, string value): 添加全局默认请求头
  • ClearDefaultHeaders(): 清除所有全局默认请求头
  • GetAllCookies(): 获取当前存储的所有 Cookie
  • ClearCookies(): 清空 Cookie 容器

使用示例

using dm98;

// GET 请求
string getResult = await DmHttp.GetAsync("https://httpbin.org/get");

// POST JSON 请求
var postData = new { name = "test", age = 18 };
string postResult = await DmHttp.PostJsonAsync("https://httpbin.org/post", postData);

// POST 表单请求
var formData = new Dictionary<string, string> { { "name", "test" }, { "age", "18" } };
string formResult = await DmHttp.PostFormAsync("https://httpbin.org/post", formData);

// 获取网页源码
string html = await DmHttp.HtmlAsync("https://www.example.com");

// 下载文件
bool downloadResult = await DmHttp.DownloadAsync("https://example.com/file.txt", "local-file.txt");

3.9 EdgeTranslator 翻译功能

方法列表

  • TranslateAsync(string 源语言, string 目标语言, string[] 翻译的文本): 批量翻译

支持的语言代码

  • 中文: zh-CHS
  • 英文: en
  • 日文: ja
  • 韩文: ko
  • 法语: fr
  • 德语: de
  • 西班牙语: es
  • 俄语: ru

使用示例

using dm98;

// 单文本翻译
var resultList = await EdgeTranslator.TranslateAsync("en", "zh-CHS", new string[] { "Hello, world!" });
string result = resultList[0]; // "你好,世界!"

// 批量翻译
string[] texts = { "Hello", "World", "Translation" };
var batchResult = await EdgeTranslator.TranslateAsync("en", "zh-CHS", texts);
// batchResult: ["你好", "世界", "翻译"]

3.10 DmTTS 语音合成

方法列表

  • Speak(string text): 播放语音
  • Save(string text): 保存语音到文件

使用示例

using dm98;

// 播放语音
DmTTS.Speak("Hello, this is a test of text to speech.");

// 保存语音
string savePath = DmTTS.Save("Hello, this is a test of text to speech.");

3.11 DmAI 大模型调用

方法列表

  • SetProvider(AIProvider provider, string apiKey, string model = null): 设置 AI 提供商
  • SetTemperature(double temperature): 设置温度
  • SetMaxTokens(int maxTokens): 设置最大生成长度
  • SetModel(string model): 设置模型名称
  • ChatAsync(string prompt, CancellationToken cancellationToken = default): 单次对话
  • ChatHistoryAsync(List<ChatMsg> messages, CancellationToken cancellationToken = default): 带历史记录的对话
  • StreamAsync(string prompt, CancellationToken cancellationToken = default): 流式对话
  • StreamHistoryAsync(List<ChatMsg> messages, CancellationToken cancellationToken = default): 带历史记录的流式对话

支持的 AI 提供商

  • AIProvider.Zhipu: 智谱AI
  • AIProvider.Hunyuan: 腾讯混元
  • AIProvider.Doubao: 豆包(火山引擎)
  • AIProvider.Qwen: 通义千问(阿里云)
  • AIProvider.DeepSeek: DeepSeek(深度求索)

使用示例

using dm98;

// 设置智谱AI
DmAI.SetProvider(AIProvider.Zhipu, "your-api-key-here");

// 单次对话
string result = await DmAI.ChatAsync("讲个笑话");

// 带历史记录的对话
var history = new List<ChatMsg>
{
    new ChatMsg { Role = "user", Content = "你好" },
    new ChatMsg { Role = "assistant", Content = "你好!我是AI助手。" }
};
string historyResult = await DmAI.ChatHistoryAsync(history);

// 流式对话
await foreach (var chunk in DmAI.StreamAsync("你好,简单介绍一下你自己"))
{
    Console.Write(chunk);
}

3.12 DmConfig 配置管理

方法列表

  • Set(string key, string value): 设置配置
  • Get(string key, string defaultValue = ""): 获取配置
  • GetInt(string key, int defaultValue = 0): 获取整数配置
  • GetBool(string key, bool defaultValue = false): 获取布尔配置
  • GetDouble(string key, double defaultValue = 0): 获取浮点数配置
  • Remove(string key): 移除配置
  • Exists(string key): 检查配置是否存在
  • Clear(): 清空所有配置
  • Save(): 保存配置到文件
  • Load(): 从文件加载配置

使用示例

using dm98;

// 设置配置
DmConfig.Set("api_key", "your-api-key");

// 获取配置
string apiKey = DmConfig.Get("api_key");

// 获取整数配置
int timeout = DmConfig.GetInt("timeout", 30000);

// 获取布尔配置
bool debug = DmConfig.GetBool("debug", false);

// 保存配置
DmConfig.Save();

// 加载配置
DmConfig.Load();

3.13 DmDB 数据库操作

方法列表

  • SetConn(string conn): 设置数据库连接字符串
  • Query<T>(string sql, object param = null): 查询列表
  • First<T>(string sql, object param = null): 查询单条数据
  • Exec(string sql, object param = null): 执行增删改SQL
  • Insert<T>(T entity): 插入实体
  • Update<T>(T entity): 更新实体
  • Delete<T>(object id): 根据主键删除

使用示例

using dm98;

// 设置连接字符串
DmDB.SetConn("Data Source=test.db");

// 创建表
DmDB.Exec("CREATE TABLE IF NOT EXISTS User (Id INTEGER PRIMARY KEY, Name TEXT, Age INTEGER)");

// 插入数据
var user = new { Id = 1, Name = "Test", Age = 18 };
DmDB.Insert(user);

// 查询数据
var users = DmDB.Query<dynamic>("SELECT * FROM User");

// 更新数据
user.Age = 19;
DmDB.Update(user);

// 删除数据
DmDB.Delete<dynamic>(1);

4. 完整测试示例

4.1 测试文件结构

dm98.Test/
└── Program.cs          # 测试主文件

4.2 测试代码

using dm98;
using System.Text;
using System.Collections.Generic;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("=== dm98 工具库测试 ===");
        Console.WriteLine();

        // 测试 DmString 字符串扩展
        await TestDmString();
        Console.WriteLine();

        // 测试 DmJson JSON 操作
        await TestDmJson();
        Console.WriteLine();

        // 测试 DmText 文本处理
        await TestDmText();
        Console.WriteLine();

        // 测试 DmFile 文件操作
        await TestDmFile();
        Console.WriteLine();

        // 测试 DmCrypto 加密操作
        await TestDmCrypto();
        Console.WriteLine();

        // 测试 DmTime 时间操作
        await TestDmTime();
        Console.WriteLine();

        // 测试 DmValidate 校验操作
        await TestDmValidate();
        Console.WriteLine();

        // 测试 DmHttp 网络操作
        await TestDmHttp();
        Console.WriteLine();

        // 测试 EdgeTranslator 翻译操作
        await TestEdgeTranslator();
        Console.WriteLine();

        // 测试 DmTTS 语音合成操作
        await TestDmTTS();
        Console.WriteLine();

        // 测试 DmAI 大模型操作
        await TestDmAI();
        Console.WriteLine();

        Console.WriteLine("=== 测试完成 ===");
        Console.WriteLine();
        Console.WriteLine("按任意键退出...");
        Console.ReadLine();
    }

    // 各模块测试方法...
}

5. 依赖项

依赖项 版本 用途
Edge_tts_sharp 1.1.7 语音合成
Dapper 2.1.28 数据库操作
System.Data.SQLite 1.0.118 SQLite 数据库
Newtonsoft.Json 13.0.3 JSON 处理

6. 注意事项

  1. AI 模块:使用 DmAI 需要提供相应的 API Key,不同提供商的 API Key 格式不同,请根据实际情况设置。

  2. 翻译模块:EdgeTranslator 使用的是 Edge 浏览器的翻译 API,可能会受到网络环境的影响。

  3. 语音合成:DmTTS 使用的是 Edge TTS 服务,需要网络连接。

  4. 数据库操作:DmDB 默认使用 SQLite 数据库,需要确保 System.Data.SQLite 依赖已正确安装。

  5. 网络操作:DmHttp 默认设置了 30 秒的超时时间,可以根据需要调整。

7. 版本历史

版本 日期 变更内容
1.0.0 2024-03-28 初始版本,包含所有基础功能

8. 联系方式

如果您在使用过程中遇到问题,可以通过以下方式联系:


dm98 工具库 - 为 .NET 开发者提供便捷的工具集,让开发更高效!

扫描二维码推送至手机访问。

版权声明:本文由DM98发布,如需转载请注明出处。

本文链接:https://blog.dm98.vip/post/9.html

分享给朋友:
返回列表

上一篇:HTMX 超详细完整教程

没有最新的文章了…

“个人专属 .NET 8 通用工具库 — 开发使用文档” 的相关文章

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。