当前位置: 首页 > article >正文

WPS JS宏编程教程(从基础到进阶)-- 第八部分:字符串技术与WPS结合应用

目录

  • 第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季度销售报告”
模板字符串核心优势
  1. 多行文本:直接换行编写(如邮件模板)
    var emailTemplate = `尊敬的${Range("A1").Value2}客户:您的订单${Range("B1").Value2}已发货。
    `;
    
  2. 表达式计算:大括号内可写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)
需支持负数索引sliceslice(-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 

相关文章:

WPS JS宏编程教程(从基础到进阶)-- 第八部分:字符串技术与WPS结合应用

目录 第8章 字符串技术与WPS结合应用8-1 字符串的3种引用方式场景:动态生成报表标题三种引用方式对比代码解析表模板字符串核心优势8-2 字符串处理之切片与搜索场景:提取身份证中的出生年份三大截取方法对比方法选择指南索引搜索实战8-3 字符串处理之修改与填充场景:规范商品…...

C++实用函数:bind

本篇来介绍了C++中bind功能。 1 std::bind 在 C++ 里,std::bind 是一个函数模板,其作用是创建一个可调用对象,该对象可绑定到一组参数上。std::bind 的函数原型如下: template< class F, class... Args > /*unspecified*/ bind( F&& f, Args&&...…...

深度学习占用大量内存空间解决办法

应该是缓存的问题&#xff0c;关机重启内存多了10G&#xff0c;暂时没找到别的方法 重启前 关机重启后...

完全无网络环境的 openEuler 系统离线安装 ClamAV 的详细步骤

准备工作&#xff08;在外网机器操作&#xff09; 1. 下载 ClamAV RPM 包及依赖 mkdir -p ~/clamav-offline/packages cd ~/clamav-offline/packages# 使用 yumdownloader 下载所有依赖包&#xff08;需提前安装 yum-utils&#xff09; sudo dnf install yum-utils -y sudo y…...

Matlab绘制函数方程图形

Matlab绘制函数方程图形&#xff1a; 多项式计算: polyval 函数 Values of Polynomials: polyval ( ) 绘制方程式图形&#xff1a; 代码如下&#xff1a; >> a[9,-5,3,7]; x-2:0.01:5; fpolyval(a,x); plot(x,f,LineWidth,2); xlabel(x); ylabel(f(x))…...

Unity UI 从零到精通 (第30天): Canvas、布局与C#交互实战

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

在AMGX中使用MPI加载自定义分布式矩阵和向量

在AMGX中使用MPI加载自定义分布式矩阵和向量 AMGX是一个用于大规模并行代数多重网格求解的GPU加速库&#xff0c;支持MPI多线程环境。以下是加载用户自定义分布式矩阵和向量的方法&#xff1a; 1. 矩阵和向量分布的基本概念 在MPI环境中&#xff0c;AMGX使用行分布方式&…...

电视盒子 刷armbian

参考 中兴电视盒子中兴B860AV3.2-M刷Armbian新手级教程-CSDN博客 1.刷安卓9 带root版本 a. 下载安卓线刷包 链接&#xff1a;https://pan.baidu.com/s/1hz87_ld2lJea0gYjeoHQ8A?pwdd7as 提取码&#xff1a;d7as b.拆机短接 3.安装usbburning工具 使用方法 &#xff0c;…...

AI应用开发之扣子第一课-夸夸机器人

首先&#xff0c;进入官网&#xff1a;点击跳转至扣子。 1.创建智能体 登录进网站后&#xff0c;点击左上角&#xff0b;图标&#xff0c;创建智能体&#xff0c;输入智能体名称、功能介绍 2.输入智能体提示词 在“人设与回复逻辑”输入以下内容&#xff1a; # 角色 你是一…...

【计算机网络实践】(十二)大学校园网综合项目设计

本系列包含&#xff1a; &#xff08;一&#xff09;以太网帧分析与网际互联协议报文结构分析 &#xff08;二&#xff09;地址解析协议分析与传输控制协议特性分析 &#xff08;三&#xff09;交换机的基本操作、配置、 虚拟局域网配置和应用 &#xff08;四&#xff09;交…...

uniapp小程序位置授权弹框与隐私协议耦合(合而为一)(只在真机上有用,模拟器会分开弹 )

注意&#xff1a; 只在真机上有用&#xff0c;模拟器会分开弹 效果图&#xff1a; 模拟器效果图&#xff08;授权框跟隐私政策会分开弹&#xff0c;先弹隐私政策&#xff0c;同意再弹授权弹框&#xff09;&#xff1a; manifest-template.json配置&#xff08; "__usePr…...

【星闪模组开发板WS8204SLEBLEModule】星闪数据收发测试

目录 开发板简介 串口设置 主从模式设置 AT命令数据发送 透传模式数据发送 结语 本文首发于《电子产品世界》论坛&#xff1a;【星闪模组开发板WS8204SLE&BLEModule】星闪数据收发测试-电子产品世界论坛https://forum.eepw.com.cn/thread/392011/1 感谢eepw论坛和成…...

天梯赛L1-22-25

L1-022 奇偶分家 题目描述 给定 N 个正整数&#xff0c;统计其中奇数和偶数各有多少个。 输入格式 第一行&#xff1a;一个正整数 N&#xff08;≤1000&#xff09;。第二行&#xff1a;N 个非负整数&#xff0c;以空格分隔。 输出格式 在一行中输出奇数的个数和偶数的个…...

基础知识:Dify 错误排查

Case1:Dify 卡在管理员界面 查看容器状态 docker compose ps 可以看到有个容器异常:docker_db_1 的状态是 Restarting(表示一直在重启) 解决方案 参考:https://github.com/langgenius/dify/issues/5731...

spring cloud微服务断路器详解及主流断路器框架对比

微服务断路器详解 1. 核心概念 定义&#xff1a;断路器模式通过快速失败机制防止故障扩散&#xff0c;当服务调用出现异常或超时时&#xff0c;自动切换到降级逻辑&#xff0c;避免级联故障。核心功能&#xff1a; 熔断&#xff1a;在故障阈值&#xff08;如错误率&#xff09…...

BufferedReader 终极解析与记忆指南

BufferedReader 终极解析与记忆指南 一、核心本质 BufferedReader 是 Java 提供的缓冲字符输入流&#xff0c;继承自 Reader&#xff0c;通过内存缓冲和行读取功能极大提升文本读取效率。 核心特性速查表 特性说明继承链Reader → BufferedReader缓冲机制默认 8KB 字符缓冲…...

linux-设置每次ssh登录服务器的时候提醒多久需要修改密码

在 Linux 系统中,你可以通过设置 motd(Message of the Day)或 sshd 配置来在用户通过 SSH 登录时提醒他们密码即将过期。以下是具体步骤: 方法 1: 使用 motd 文件 motd 文件在用户登录时显示,你可以通过脚本动态生成内容,提醒用户密码过期时间。 编辑 /etc/motd 文件:…...

(小白0基础) 微调deepseek-8b模型参数详解以及全流程——训练篇

​ 本篇参考bilibili如何在本地微调DeepSeek-R1-8b模型_哔哩哔哩_bilibili 上篇&#xff1a;(小白0基础) 租用AutoDL服务器进行deepseek-8b模型微调全流程(Xshell,XFTP) —— 准备篇 初始变量 max_seq_length 2048 dtype None load_in_4bit True单批次最大处理模型大小dy…...

调用LLM的api

目录 chatgptdemo可选模型 chatgpt demo import openai openai.api_key xxxxxxxxx # 自己的api key openai.api_base https://api.feidaapi.com/v1 # 中转非直连 # response openai.ChatCompletion.create( # model"gpt-4o", # messages[ # {"rol…...

关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析

以下是关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析&#xff1a; 一、汽车辅助驾驶等级详解 根据SAE&#xff08;国际自动机工程师学会&#xff09;的标准&#xff0c;自动驾驶分为 L0到L5 六个等级&#xff1a; 1. L0&#xff08;无自动化&…...

windows安卓子系统wsa隐藏应用列表的安装激活使用

Windows 11 安卓子系统应用部署全攻略 windows安卓子系统wsa隐藏应用列表的安装激活使用|过检测核心前端 在 Windows 11 系统中&#xff0c;安卓子系统为用户带来了在电脑上运行安卓应用的便利。经过一系列的操作&#xff0c;我们已经完成了 Windows 11 安卓子系统的底层和前端…...

mongodb7日志特点介绍:日志分类、级别、关键字段(下)

#作者&#xff1a;任少近 上篇《mongodb7日志特点介绍&#xff1a;日志分类、级别、关键字段(上)》 链接: link 文章目录 4.日志会输出F/E/W/I四种情况5.日志关键字段6.日志量验证情况7.总结 4.日志会输出F/E/W/I四种情况 在MongoDB7中&#xff0c;日志输出按照严重性分为四种…...

word中插入图片显示不完整,怎么处理让其显示完整?

在WORD里插入图片后&#xff0c;选择嵌入式发现插入的图片显示不正常&#xff0c;只能显示底部一部分&#xff0c;或者遮住文字。出现此故障的原因有可能是设置为固定值的文档行距小于图形的高度&#xff0c;从而导致插入的图形只显示出了一部分。 1.选中图片&#xff0c;然后点…...

SAP S4HANA embedded analytics

SAP S4HANA embedded analytics...

大模型在胃十二指肠溃疡预测及治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与方法 二、胃十二指肠溃疡概述 2.1 疾病定义与分类 2.2 流行病学特征 2.3 病因与发病机制 2.4 临床表现与诊断方法 三、大模型技术原理与应用现状 3.1 大模型基本概念与架构 3.2 在医疗领域的应…...

macos下 ~/.zshrc~ 和 ~/.zshrc

macos下 ~/.zshrc~ 和 ~/.zshrc ~/.zshrc通常是备份文件或临时文件&#xff0c;可能由编辑器&#xff08;如vim&#xff09;创建&#xff0c;通常可以安全删除&#xff0c;不会影响系统运行。 在Mac下&#xff0c;这种带~后缀的备份文件通常是由以下情况产生&#xff1a; 常…...

【C语言基础】双指针在qsort函数中的应用

在C语言中使用 qsort 对字符串数组&#xff08;如 char* 数组&#xff09;排序时&#xff0c;必须转换为双指针&#xff08;char**&#xff09;&#xff0c;这是由字符串数组的内存结构和 qsort 的工作原理决定的。以下是详细解释&#xff1a; 一、底层原理分析 1. 字符串数组…...

Android组件刷新

Android中刷新View的方法有以下几种&#xff1a; 调用invalidate()方法&#xff0c;该方法会使View树中的所有视图无效或脏&#xff0c;等待下一次绘制时重新绘制。例如&#xff1a; mCustomView.invalidate(); 调用postInvalidate()方法&#xff0c;该方法类似于invalidate()…...

JavaWeb开发 Servlet底层 Servlet 过滤器 过滤器和拦截器 手写一个限制访问路径的拦截器

目录 万能图 过滤器自我理解 案例 实现Filter 接口 配置文件 web.xml 将过滤器映射到 servlet 用处 拦截器 手写案例 重写 preHandle() 方法 拦截处理 重写 postHandle() 方法 后处理 重写 afterHandle() 方法 完成处理 代码 如何配置拦截器 万能图 还是看一下这张…...

QT中多线程写法

转自个人博客&#xff1a;QT中多线程写法 1. QThread及moveToThread() 使用情况&#xff1a; 多使用于需要将有着复杂逻辑或需要一直占用并运行的类放入子线程中执行的情况&#xff0c;moveToThread是将整个类的对象移入子线程。 优缺点&#xff1a; 优点&#xff1a;更符合…...