个人专属 .NET 8 通用工具库 — 开发使用文档
摘要: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): 动态访问 JSONGetPath(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): 时间戳转回 DateTimeDate(DateTime dt): 格式化为 yyyy-MM-ddFormatDateTime(DateTime dt): 格式化为 yyyy-MM-dd HH:mm:ssDayDiff(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(): 获取当前存储的所有 CookieClearCookies(): 清空 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: 智谱AIAIProvider.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): 执行增删改SQLInsert<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. 注意事项
AI 模块:使用 DmAI 需要提供相应的 API Key,不同提供商的 API Key 格式不同,请根据实际情况设置。
翻译模块:EdgeTranslator 使用的是 Edge 浏览器的翻译 API,可能会受到网络环境的影响。
语音合成:DmTTS 使用的是 Edge TTS 服务,需要网络连接。
数据库操作:DmDB 默认使用 SQLite 数据库,需要确保 System.Data.SQLite 依赖已正确安装。
网络操作:DmHttp 默认设置了 30 秒的超时时间,可以根据需要调整。
7. 版本历史
| 版本 | 日期 | 变更内容 |
|---|---|---|
| 1.0.0 | 2024-03-28 | 初始版本,包含所有基础功能 |
8. 联系方式
如果您在使用过程中遇到问题,可以通过以下方式联系:
dm98 工具库 - 为 .NET 开发者提供便捷的工具集,让开发更高效!