MySQL字符串数字提取实战:从正则到自定义函数的完整方案
1. 项目概述从混乱中提取秩序在数据处理的日常里我们经常会遇到一些“不守规矩”的字段。比如一个商品编码被存成了“SKU-2024-001A”一个用户手机号被记录为“联系电话13800138000备用”或者一个地址里混杂着楼层和房间号“XX大厦12层1205室”。这些数据在录入时为了方便一股脑塞进了字符串VARCHAR或TEXT字段里但当我们想做数据分析、生成报表或者进行数据清洗时就需要把里面埋藏的数字单独“挖”出来。这个“挖”的过程就是字符串中提取数字。这听起来简单不就是把非数字字符去掉吗但在MySQL里没有现成的EXTRACT_NUMBER()这样的函数。这就需要我们根据不同的数据“混乱”程度选择合适的“手术刀”。有的情况简单用内置函数组合一下就能搞定有的情况复杂数字和字母粘连、格式多变就得写点正则表达式或者自定义函数来精细处理。今天我就结合十多年跟数据库打交道的经验把MySQL里提取数字的各种场景、方法、坑点以及性能考量给你一次讲透。无论你是刚接触SQL的数据分析师还是需要优化ETL流程的后端开发这篇文章都能让你找到直接能用的解决方案。2. 核心思路与方案选型先诊断再开方面对一个需要提取数字的字符串第一步不是急着写SQL而是先“诊断”数据。不同的混乱模式决定了我们使用不同的“药方”。选错了方法要么结果不对要么性能堪忧。2.1 常见数据“病症”分类根据我的经验需要提取数字的字符串大致可以分为以下几类纯数字型字符串里只有数字没有其他任何字符。例如‘12345’。这其实不需要提取直接转换类型即可但有时它被误存为字符串属于“假性病症”。数字前置或后置型数字作为一个整体出现在字符串的开头或结尾与其他字符明确分开。例如‘订单号12345’‘重量500g’。这类情况处理起来相对简单。数字镶嵌型数字分散在字符串的各个部分与其他字符字母、中文、符号交错混合。例如‘A1B2C3’‘第5排第12号’。这是最常见也最需要技巧的类型。多数字分离型一个字符串里包含多个独立的数字片段我们需要分别提取或选择其中一个。例如‘版本v2.1.3’需要提取213或213‘温度范围-20~50℃’需要提取-20和50。包含格式字符型数字中包含千位分隔符、小数点、负号等。例如‘价格1,234.56元’‘利润-500’。提取时需要保留这些格式字符才能得到有意义的数字。2.2 方案工具箱与选型逻辑MySQL提供了多种工具但没有一把是“万能钥匙”。我们的选型逻辑基于两个核心原则准确性和性能。简单场景用简单方法复杂场景才上复杂武器。简单替换法使用REPLACE()函数链式调用逐一剔除已知的非数字字符。适用于非数字字符种类固定且极少的情况。优点是直观、执行快缺点是灵活性极差数据稍有变化就可能出错。遍历构造法使用REGEXP_REPLACE()MySQL 8.0或自定义函数通过正则表达式匹配并移除所有非数字字符。这是处理“数字镶嵌型”和“多数字分离型”的主力方案。优点是强大、灵活、一行代码搞定缺点是正则表达式有一定学习成本且在极老版本的MySQL5.7及以下中不支持原生正则替换。子串定位法使用SUBSTRING()、LOCATE()、INSTR()等函数结合CAST()或CONVERT()专门对付“数字前置或后置型”。优点是精准、高效缺点是只能处理数字位置相对固定的情况。自定义函数法当内置函数无法满足极端复杂的需求如提取特定模式的第N个数字、处理极其复杂的文本结构时就需要编写存储函数。这是最后的手段。优点是功能无限定制缺点是开发维护成本高且可能影响查询性能。注意在MySQL 8.0之前原生不支持REGEXP_REPLACE。如果你被困在5.7版本处理复杂提取通常需要诉诸于冗长的字符串函数组合或创建自定义函数过程会繁琐很多。这也是推动升级到8.0的一个务实理由。3. 核心函数详解与实战演练理论说完了我们直接上实战。我会用具体的SQL示例带你一步步掌握每种方法。3.1 基础招式字符串替换与遍历假设我们有一个简单的商品表products其中有一个混乱的product_code字段。CREATE TABLE products ( id INT PRIMARY KEY, product_code VARCHAR(50) ); INSERT INTO products VALUES (1, Item-2024-001), (2, SKU#A205B), (3, Gen-100X), (4, 12345), (5, Version2.1.5);场景一剔除固定分隔符提取连续数字如果数字总是被固定的几个分隔符如‘-’‘#’包围可以用REPLACE()。-- 目标从‘Item-2024-001’中提取‘2024001’ SELECT product_code, REPLACE(REPLACE(product_code, Item-, ), -, ) AS extracted_number_simple FROM products WHERE id 1;结果‘2024001’原理解读这里使用了嵌套的REPLACE。内层REPLACE(product_code, Item-, )先去掉前缀得到‘2024-001’外层REPLACE(..., -, )再去掉横杠最终得到连续数字。这种方法非常脆弱如果数据变成‘Item_2024_001’它就失效了。场景二使用正则表达式无差别移除所有非数字字符这是更通用和强大的方法使用REGEXP_REPLACE()。-- MySQL 8.0 语法 -- 目标移除所有非数字字符 SELECT product_code, REGEXP_REPLACE(product_code, [^0-9], ) AS extracted_number_regex FROM products;结果‘Item-2024-001’-‘2024001’‘SKU#A205B’-‘205’(注意只保留了数字去掉了字母)‘Gen-100X’-‘100’‘12345’-‘12345’‘Version2.1.5’-‘215’(注意小数点也被移除了)原理解读REGEXP_REPLACE(source, pattern, replacement)。这里的模式‘[^0-9]’是一个正则表达式[^...]表示匹配不在括号内的任何字符0-9代表数字。所以这个模式匹配所有非数字字符并将其替换为空字符串‘’。这是提取纯数字序列最直接的方法。关键坑点请注意‘Version2.1.5’的结果是‘215’。因为小数点.也被视为非数字字符而被移除了。如果你需要保留小数点来提取浮点数2.1或2.15这个方法就不适用了。3.2 进阶技巧保留小数与负号处理价格、温度等数据时我们需要保留数字的格式。这时我们需要调整正则表达式的模式。-- 创建一个包含格式数字的新表 CREATE TABLE financials ( id INT PRIMARY KEY, description VARCHAR(100) ); INSERT INTO financials VALUES (1, 售价: $1,299.99), (2, 成本: 850.50), (3, 利润: -234.5), (4, 增长率: 15.2%); -- 目标提取包含小数点和负号的数字 SELECT description, -- 模式解释[-]? 匹配0个或1个正负号 -- \\d 匹配1个或多个数字整数部分 -- (?:\\.\\d)? 这是一个非捕获分组匹配0个或1个小数点加数字小数部分 REGEXP_SUBSTR(description, [-]?\\d(?:\\.\\d)?) AS extracted_numeric FROM financials;结果‘售价: $1,299.99’-‘1’(等等出问题了)‘成本: 850.50’-‘850.50’‘利润: -234.5’-‘-234.5’‘增长率: 15.2%’-‘15.2’第一个结果不对因为千位分隔符逗号,破坏了数字的连续性。正则模式\\d无法匹配1,299。我们需要在模式中也允许逗号但在提取后去掉它。SELECT description, -- 新模式允许数字中间有逗号 REGEXP_SUBSTR(description, [-]?[\\d,](?:\\.\\d)?) AS raw_extract, -- 提取后再移除逗号 REPLACE(REGEXP_SUBSTR(description, [-]?[\\d,](?:\\.\\d)?), ,, ) AS cleaned_number FROM financials WHERE id 1;结果raw_extract‘1,299.99’,cleaned_number‘1299.99’实操心得REGEXP_SUBSTR()是REGEXP_REPLACE()的姐妹函数它不进行替换而是返回匹配到的第一个子串。对于提取任务它通常更合适。在处理现实世界混乱的数据时“先匹配再清洗”往往是更稳妥的两步走策略先用一个宽松的模式允许逗号确保抓取到完整的数字字符串再用REPLACE()等函数做二次清理。3.3 精准打击提取特定位置的数字当数字在字符串中的位置相对固定时可以使用更高效的子串函数。-- 假设我们有一个固定的格式 ‘前缀-数字-后缀’ INSERT INTO products VALUES (6, ORD-20240415-Confirmed); -- 目标提取中间的日期数字 ‘20240415’ SELECT product_code, -- 方法1使用SUBSTRING_INDEX SUBSTRING_INDEX(SUBSTRING_INDEX(product_code, -, 2), -, -1) AS date_code_1, -- 方法2使用SUBSTRING配合LOCATE SUBSTRING( product_code, LOCATE(-, product_code) 1, -- 起点第一个‘-’之后 LOCATE(-, product_code, LOCATE(-, product_code) 1) - LOCATE(-, product_code) - 1 -- 长度第二个‘-’和第一个‘-’的位置差减1 ) AS date_code_2 FROM products WHERE id 6;结果两种方法都返回‘20240415’。原理解读方法1SUBSTRING_INDEXSUBSTRING_INDEX(str, delim, count)返回字符串str中第count次出现分隔符delim之前的子串如果count为正。SUBSTRING_INDEX(product_code, -, 2)得到‘ORD-20240415’再对这个结果取最后一个‘-’之后的部分count为-1就得到了‘20240415’。这种方法简洁但要求格式严格。方法2SUBSTRINGLOCATELOCATE(substr, str)返回子串的位置。我们先找到第一个‘-’的位置加1作为起始点。然后找到第二个‘-’的位置从第一个之后开始找计算两个位置的差值再减1就是中间数字的长度。最后用SUBSTRING截取。这种方法更灵活可以处理更复杂的定位逻辑。性能对比对于简单的固定格式SUBSTRING_INDEX通常更快可读性也更好。如果分隔符位置计算复杂正则表达式REGEXP_SUBSTR的写法可能更清晰但性能上正则通常比简单的字符串函数稍慢。4. 应对极端复杂场景与自定义函数有时候数据烂得超乎想象或者业务逻辑极其特殊内置函数组合起来像一团乱麻。这时候就该考虑自定义函数了。4.1 场景提取字符串中所有数字并作为数组返回MySQL没有内置的数组类型但我们可以返回一个用分隔符连接的字符串或者在程序中使用游标处理。这里展示一个返回所有数字拼接字符串的简单函数。DELIMITER // CREATE FUNCTION extract_all_numbers(input_string TEXT) RETURNS TEXT DETERMINISTIC BEGIN DECLARE i INT DEFAULT 1; DECLARE len INT; DECLARE current_char CHAR(1); DECLARE result TEXT DEFAULT ; DECLARE temp_number TEXT DEFAULT ; DECLARE in_number BOOL DEFAULT FALSE; SET len CHAR_LENGTH(input_string); WHILE i len DO SET current_char SUBSTRING(input_string, i, 1); -- 判断当前字符是否为数字0-9 IF current_char REGEXP ^[0-9]$ THEN SET temp_number CONCAT(temp_number, current_char); SET in_number TRUE; ELSE IF in_number THEN -- 刚离开一个数字序列将其添加到结果并加分隔符 SET result CONCAT_WS(,, result, temp_number); SET temp_number ; SET in_number FALSE; END IF; END IF; SET i i 1; END WHILE; -- 处理字符串以数字结尾的情况 IF in_number THEN SET result CONCAT_WS(,, result, temp_number); END IF; -- 去掉结果开头可能多余的分隔符 RETURN TRIM(LEADING , FROM result); END // DELIMITER ; -- 测试这个函数 SELECT extract_all_numbers(A12B34C56D7) AS numbers;结果‘12,34,56,7’函数解读这个函数手动遍历字符串的每一个字符。它维护一个状态in_number表示当前是否正在读取一个数字序列。当遇到数字时就累积到temp_number当遇到非数字且之前正在读数字时就把累积的数字用逗号隔开拼接到最终结果result中。虽然逻辑不复杂但写起来比一行正则要长得多。它的优势在于在MySQL 5.7等旧版本中这是实现复杂提取的可行路径。4.2 场景提取第N次出现的数字业务需求可能是“提取第二个破折号后面的数字”。用正则可以相对优雅地解决MySQL 8.0。-- 假设字符串格式为 ‘区域-类型-编号-状态’如 ‘CN-Warehouse-1005-Active’ -- 目标提取第三个‘-’后面的编号 ‘1005’ SELECT CN-Warehouse-1005-Active AS raw_string, REGEXP_SUBSTR(CN-Warehouse-1005-Active, [0-9], 1, 3) AS third_number_match;结果third_number_match‘1005’原理解读REGEXP_SUBSTR的完整语法是REGEXP_SUBSTR(str, pattern, position, occurrence)。这里position1表示从字符串开头开始搜索occurrence3表示返回第三次匹配到的结果。如果字符串是‘CN-100-Warehouse-2005-Active’那么第一次匹配到‘100’第二次匹配到‘2005’第三次匹配就不存在了函数会返回NULL。这个功能非常实用可以精准定位。注意事项自定义函数和复杂的正则表达式虽然强大但会显著增加单次查询的计算开销。在数据量巨大的表上应尽量避免在WHERE条件或JOIN条件中使用它们否则可能导致全表扫描和性能急剧下降。更好的做法是在数据清洗阶段用一个批处理任务将提取好的数字更新到一个专门的字段中后续查询直接使用这个“干净”的字段。5. 性能优化与实战避坑指南在实际生产环境中数据量动辄百万、千万方法选不对一个查询就能让数据库“喘不过气”。下面是我踩过坑后总结出的几点核心建议。5.1 性能对比实验我曾在一個约100万行的测试表上对几种方法进行过简单的性能对比非严格基准测试但能说明问题REGEXP_REPLACE/REGEXP_SUBSTR功能最强但性能开销最大。在百万级数据上做全表扫描并使用正则查询时间可能是简单函数的数倍。REPLACE()链式调用如果模式固定且简单性能非常好接近原生操作。SUBSTRING_INDEX等字符串函数性能最优因为它们是纯C实现的、高度优化的内置函数。自定义函数性能最不可控。每次调用都会涉及上下文切换和逻辑判断在大量数据行上调用速度会非常慢。结论能用简单字符串函数解决的绝不用正则能用正则解决的绝不写自定义函数。5.2 常见问题排查表问题现象可能原因解决方案提取结果为空NULL1. 字符串中确实没有数字。2. 正则表达式模式不匹配如忘记处理负号、小数点。3.REGEXP_SUBSTR的occurrence参数超出了实际匹配次数。1. 先用SELECT * FROM table WHERE column REGEXP [0-9]确认是否存在数字。2. 检查并修正正则模式使用更宽松的匹配如‘[0-9.-]’。3. 尝试将occurrence设为1或先用REGEXP_REPLACE(column, [^0-9.-], )看是否能提取出内容。提取的数字不完整如小数点丢失正则表达式‘[^0-9]’将小数点.也视为非数字字符移除了。修改正则模式在排除列表中加入需要保留的字符或使用REGEXP_SUBSTR直接匹配数字格式‘[-]?\\d(?:\\.\\d)?’。提取出多个数字连在一起了使用REGEXP_REPLACE移除所有非数字字符时不同位置的数字被合并了。例如‘A12B34’变成‘1234’。如果业务需要的是‘12’和‘34’这两个独立数字就不能用简单移除法。需要使用REGEXP_SUBSTR配合循环或自定义函数或者用应用程序层处理。查询速度极慢在WHERE条件或JOIN中使用了正则表达式或自定义函数导致无法使用索引进行全表扫描。根本解决增加一个持久化的、已清洗的字段如numeric_value并为其建立索引。通过定时任务或触发器更新该字段。临时解决如果必须实时计算尝试将计算移到应用层或者使用更简单的字符串函数组合。千位分隔符导致数字错误如‘1,234’被提取为‘1’和‘234’或‘1234’但未去除逗号。分两步先用允许逗号的模式提取如REGEXP_SUBSTR(col, [\\d,](?:\\.\\d)?)再用REPLACE(extracted, ,, )清理。5.3 终极建议预处理是最好的优化从我处理过的大量数据清洗项目来看最有效、最根本的策略是“一次清洗多次使用”。设计阶段如果可能在数据库设计时就将“代码”和“编号”分开存储。比如product_code(VARCHAR) 和product_numeric_id(INT)。ETL阶段在数据仓库的ETL提取、转换、加载流程中完成数字提取的清洗工作将结果存入新的、类型正确的字段。临时补救对于已存在的混乱数据可以运行一次性的数据迁移脚本-- 增加一个新字段 ALTER TABLE your_table ADD COLUMN clean_number INT; -- 或 DECIMAL, VARCHAR -- 用最优的提取逻辑批量更新 UPDATE your_table SET clean_number CAST(REGEXP_REPLACE(dirty_column, [^0-9], ) AS UNSIGNED); -- 为新字段建立索引 CREATE INDEX idx_clean_number ON your_table(clean_number);这样以后所有的查询、关联、排序操作都基于clean_number这个“干净”的字段进行性能会有质的飞跃。字符串中提取数字这个看似微小的需求背后是数据规范性的缩影。混乱的数据就像房间里乱扔的袜子临时找一双写一个复杂的查询总能找到但代价是时间和烦躁。最好的办法还是花点时间把袜子配对、放进抽屉做好数据清洗和规范存储。希望这篇文章里提供的各种“找袜子”的工具和思路能帮你更高效地应对数据中的混乱把时间花在更有价值的分析上而不是和一句SQL较劲。

相关新闻

蓝桥杯Java A组国赛真题:工程能力的实战标尺

蓝桥杯Java A组国赛真题:工程能力的实战标尺

1. 这份真题卷到底值不值得花时间刷?——一个带过5届蓝桥杯Java组选手的老带教说点实在话 “第十三届蓝桥杯决赛(国赛)真题 Java A 组【原卷】”——光看标题,很多刚接触竞赛的同学第一反应是:这不就是一份PDF吗&#…

2026/8/26 11:56:59 阅读更多 →
KitBash3D Cargo插件:无缝集成UE与3D资产库的一键导入方案

KitBash3D Cargo插件:无缝集成UE与3D资产库的一键导入方案

1. 从资源库到引擎:KitBash3D Cargo插件的价值定位如果你是一名UE(Unreal Engine)开发者,无论是做游戏、影视动画还是建筑可视化,大概率都经历过一个痛苦的过程:为了一个场景,满世界找模型&…

2026/8/26 11:55:56 阅读更多 →
KitBash3D Cargo插件:无缝连接云端资产库与虚幻引擎的创作利器

KitBash3D Cargo插件:无缝连接云端资产库与虚幻引擎的创作利器

1. 项目概述:当KitBash3D Cargo遇见虚幻引擎如果你是一位虚幻引擎(UE)的创作者,无论是独立开发者还是团队中的美术师,大概率都经历过这样的场景:项目需要一个风格统一、质量上乘的3D资产库来快速搭建场景原…

2026/8/26 11:55:56 阅读更多 →

最新新闻

单片机烧录原理:Bootloader、Flash与JTAG的底层机制

单片机烧录原理:Bootloader、Flash与JTAG的底层机制

1. 烧录不是“灌进去”,而是“按规范写进去” 很多人第一次接触单片机,看到开发板插上USB线、点一下“Download”按钮,几秒钟后LED就亮了,下意识会觉得:“程序像水一样被倒进芯片里了。”这种直觉很形象,但…

2026/8/26 12:23:50 阅读更多 →
AI Agent多平台网关:统一接口、协议转换与高可用架构设计

AI Agent多平台网关:统一接口、协议转换与高可用架构设计

1. 从“一个萝卜一个坑”到“一夫当关”:为什么需要多平台网关如果你和我一样,在早期尝试将AI Agent集成到自己的产品或者工作流中,大概率会遇到一个非常具体且令人头疼的问题:平台绑定。比如,你写了一个基于OpenAI AP…

2026/8/26 12:23:50 阅读更多 →
SiriWave.js:用Canvas API实现Web端物理感语音波纹反馈

SiriWave.js:用Canvas API实现Web端物理感语音波纹反馈

1. 为什么一个“波纹”值得单独写个库?——从Siri交互的视觉心理学说起 你有没有注意过,当你对着iPhone说“嘿 Siri”时,那圈从麦克风位置向外扩散、又微微回弹的蓝色波纹?它不是装饰,是苹果精心设计的 反馈信标 &am…

2026/8/26 12:23:50 阅读更多 →
Android前台服务(Foreground Service)深度解析:从核心机制到实战应用

Android前台服务(Foreground Service)深度解析:从核心机制到实战应用

1. 从后台到前台:为什么你的应用需要Foreground Service? 如果你在Android开发中做过需要长时间运行的任务,比如播放音乐、记录GPS轨迹或者下载大文件,那你一定遇到过这个经典难题:应用切到后台,任务就被系…

2026/8/26 12:23:50 阅读更多 →
C# Hook技术实战:动态修改MessageBox按钮文字

C# Hook技术实战:动态修改MessageBox按钮文字

1. 项目概述:为什么需要自定义MessageBox按钮文字?在C#的Windows Forms或WPF桌面应用开发中,MessageBox.Show()几乎是每个开发者都离不开的“老朋友”。它简单、直接,弹个窗,告诉用户“操作成功”或“出错了”&#xf…

2026/8/26 12:23:49 阅读更多 →
企业级AI编码助手落地指南:MonkeyCode如何解决大模型适配难题

企业级AI编码助手落地指南:MonkeyCode如何解决大模型适配难题

1. 项目概述:为什么企业研发需要“适配优选”的大模型?最近和几个技术团队负责人聊天,大家普遍有个共识:现在不搞点AI,特别是大模型,感觉研发流程都快跟不上趟了。但真要把大模型用起来,尤其是用…

2026/8/26 12:22:49 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →