目录
- 第8章 字符串技术与WPS结合应用
- 8-1 字符串的3种引用方式
- 场景:动态生成报表标题
- 三种引用方式对比
- 代码解析表
- 模板字符串核心优势
- 8-2 字符串处理之切片与搜索
- 场景:提取身份证中的出生年份
- 三大截取方法对比
- 方法选择指南
- 索引搜索实战
- 8-3 字符串处理之修改与填充
- 场景:规范商品编号
- 关键方法应用
- 代码流程解析
- 8-4 正则表达式入门
- 场景:从客户留言中提取手机号
- 正则表达式两大创建方式
- 代码解析表
- 常见基础匹配规则
- 8-5 支持正则的字符串函数
- 场景:清洗杂乱的订单备注
- 三步清洗法
- 关键函数对比
- 可视化清洗流程
- 8-6 元字符:文本匹配的基石
- 场景:从物流单中提取运单号
- 核心元字符解析
- 元字符对照表
- 代码解析
- 8-7 元字符应用:提取连续数字
- 场景:清洗发票金额数据
- 代码实现
- 正则逻辑分解
- 处理流程
- 8-8 字符组与任选:灵活匹配逻辑
- 场景:识别多种日期格式
- 字符组与任选符结合
- 符号对比表
- 处理结果示例
- 8-9 字符组应用:条件计数
- 场景:统计考试达标人数
- 正则实现逻辑
- 正则解析表
- 输入输出示例
- 8-10 贪婪匹配:最长的代价
- 场景:截取HTML标签内容
- 贪婪与懒惰匹配对比
- 符号对比表
- 8-11 贪婪匹配应用:提取身份证日期
- 场景:从身份证号提取格式化生日
- 正则截取与格式化
- 正则分组解析
- 8-12 分组匹配:结构化提取
- 场景:解析订单信息
- 分组捕获与命名
- 分组结果映射
- 8-13 分组应用:合计字符串中的数字
- 场景:计算订单描述中的总金额
- 正则提取与计算
- 正则逻辑分解
- 处理流程
- 8-14 分组引用:在替换中重用内容
- 场景:格式化日期字符串
- 正则替换与重组
- 替换符号解析
- 扩展应用:手机号脱敏
- 8-15 零宽断言:精准锚定边界
- 场景:提取含单位的金额
- 正向断言(Lookahead)
- 断言类型对比
- 8-16 零宽断言应用:规范编号格式
- 场景:统一产品编码格式
- 正则标准化流程
- 处理步骤解析
所有章节教程word文件可以点击如下链接获取
wps-excel办公+JS宏编程教程基础到进阶+函数使用手册
第8章 字符串技术与WPS结合应用
8-1 字符串的3种引用方式
场景:动态生成报表标题
假设需要将单元格中的产品名称和季度销量拼接为标题,例如将A1
单元格的“手机”和B1
单元格的“Q3”合并为“【手机】2023年Q3季度销售报告”。
三种引用方式对比
// 方式1:单引号(适合纯文本)
var str1 = '产品名称:' + Range("A1").Value2;// 方式2:双引号(与单引号等效)
var str2 = "季度:" + Range("B1").Value2;// 方式3:反引号(模板字符串,支持换行和插值)
var str3 = `【${Range("A1").Value2}】2023年${Range("B1").Value2}季度销售报告`;
代码解析表
行号 | 代码片段 | 作用说明 | 输入数据示例 | 输出结果示例 |
---|---|---|---|---|
2 | '产品名称:' + ... | 固定前缀拼接单元格值 | A1=“手机” | “产品名称:手机” |
5 | "季度:" + ... | 双引号拼接 | B1=“Q3” | “季度:Q3” |
8 | `【${...}】2023年...` | 模板字符串动态插入变量 | A1=“手机”, B1=“Q3” | “【手机】2023年Q3季度销售报告” |
模板字符串核心优势
- 多行文本:直接换行编写(如邮件模板)
var emailTemplate = `尊敬的${Range("A1").Value2}客户:您的订单${Range("B1").Value2}已发货。 `;
- 表达式计算:大括号内可写JS代码
var discountInfo = `当前折扣:${Range("C1").Value2 * 10}%`;
8-2 字符串处理之切片与搜索
场景:提取身份证中的出生年份
从身份证号“510723199508120025”中提取“1995”年份信息。
三大截取方法对比
var idCard = "510723199508120025";// 方法1:substring(开始索引, 结束索引)
var year1 = idCard.substring(6, 10); // "1995"// 方法2:slice(开始索引, 结束索引)(支持负数)
var year2 = idCard.slice(6, 10); // "1995"// 方法3:substr(开始索引, 截取长度)
var year3 = idCard.substr(6, 4); // "1995"
方法选择指南
需求 | 推荐方法 | 示例 |
---|---|---|
已知起止位置 | substring | 截取身份证第7-10位(索引6-9) |
需支持负数索引 | slice | slice(-4) 获取末4位校验码 |
已知起始点和长度 | substr | 截取手机号前3位(substr(0,3) ) |
索引搜索实战
// 查找@符号在邮箱中的位置
var email = "user_123@company.com";
var atIndex = email.indexOf("@"); // 返回7
var domain = email.slice(atIndex + 1); // "company.com"// 安全写法:未找到时返回-1
if (email.indexOf("@") !== -1) {console.log("邮箱格式合法");
}
8-3 字符串处理之修改与填充
场景:规范商品编号
将不统一的编号格式如“A-5”“B12”统一为“A-0005”“B-0012”。
关键方法应用
function 格式化编号() {var rawData = ["A-5", "B12", "C-103"];var formattedData = [];rawData.forEach(code => {// 步骤1:移除所有非字母数字字符var cleaned = code.replace(/[^A-Z0-9]/gi, "");// 步骤2:拆分字母与数字var letters