VBS中的多值匹配检查

devtools/2024/9/23 0:15:19/

实际场景中有这样一个需求,判断某个对象的某个属性,如果它的字符串值中包含某些特定的字符串,那么要进行开始过程A,否则开始过程B。
最简单的实现是

if InStr(obj.title,".大师")<>0 or InStr(obj.title,".统领")<>0 or InStr(obj.title,".丞相")<>0 or InStr(obj.title,".元帅")<>0 or InStr(obj.title,".将军")<>0  then

逻辑是对的,不过每多一个匹配条件,在语句中要加一个or项,用于防御性编程是OK的,一般情况是不推荐这样写的,改成下面这样怎样呢

Function isleader(title)leaderstrs=array(".大师.",".统领",".丞相",".元帅",".将军")match=Falsefor each item in leaderstrsif inStr(title,item) thenmatch=TrueExit Forend ifnextisleader=match
End Function

这样会好一些,主程序里调用即可

if isleader(obj.title) then

不过这样用字符串数组匹配还不够优化,可以考虑用正则表达式匹配

Dim re
Set re = New RegExp
re.Pattern = "\.大师|\.统领|\.丞相|\.元帅|\.将军"
re.IgnoreCase = False

后面检查判断用:

if re.test(obj.title) then

数据放在代码里还是不好,把匹配值移到同文件夹下的配置文件params.js中

leader = {"title":"\.大师|\.统领|\.丞相|\.元帅|\.将军"}

程序先加载配置文件

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("params.js", ForReading)
strResponses = objTextFile.ReadAll
objTextFile.CloseSet html = CreateObject("htmlfile")
Set window = html.parentWindow
window.execScript strResponses, "JScript" ' 解析 jsSet jsleader = window.leader ' 获取解析后的对象Dim re
Set re = New RegExp
re.Pattern =  jsleader.title
re.IgnoreCase = False

嗯,这下似乎可以满意了,虽然代码看起来多了一些,不过配置参数和功能逻辑分离是一个好的编程习惯。


http://www.ppmy.cn/devtools/36317.html

相关文章

VBA随机取数在Excel中的应用---10以内加法出题及计算得分

VBA随机取数在Excel中的应用---10以内加法出题及阅卷 小学生加减乘除的计算,只要不是应用题,完全可以用VBA随机取数解决,甚至连阅卷都可以用VBA操作。现在写一个最简单的,10以内的加法。 用到两个关键点:随机取数Int(0 + 11 * Rnd())和字典去重(Scripting.Dictionary) …

yolov5-pytorch-Ultralytics训练+预测+报错处理记录

一、前言 玩一段时间大模型&#xff0c;也该回归一下图像识别。本项目用于记录使用基于Ultralytics的yolov5进行目标检测测试。为什么用Ultralytics呢&#xff1f;答案有3 1、其良好的生态&#xff0c;方便我们部署到其它语言和设备上。因此本次测试结论&#xff1a;大坑没有&…

为什么会查询不到DNS信息?怎么排查?

DNS&#xff08;域名系统&#xff09;是将域名转换为相应 IP 地址的关键系统。查询 DNS 信息具有重要作用&#xff0c;通过查询 DNS 信息&#xff0c;我们可以知道域名对应的 IP 地址&#xff0c;这是最主要的信息&#xff0c;使设备能与目标服务器进行通信&#xff1b;其次是域…

ubuntu 安装单节点HBase

下载HBase mkdir -p /home/ellis/HBase/ cd /home/ellis/HBase/ wget https://downloads.apache.org/hbase/2.5.8/hbase-2.5.8-bin.tar.gz tar -xvf hbase-2.5.8-bin.tar.gz安装java jdk sudo apt install openjdk-11-jdksudo vim /etc/profileexport JAVA_HOME/usr/lib/jvm/…

05-MessageConverter和ControllerAdvice

准备对象 Data static class User {private String name;private int age;JsonCreator // 默认jackson会使用无参构造器反序列化 这里强制使用当前带参构造器public User(JsonProperty("name") String name, JsonProperty("age") int age) {this.name …

XSS Challenges 靶场通关解析

前言 XSS Challenges&#xff08;跨站脚本攻击挑战&#xff09;是一种用于学习和测试跨站脚本&#xff08;XSS&#xff09;漏洞的实验性平台。这些挑战旨在帮助安全研究人员和开发人员了解XSS漏洞的工作原理、检测方法和防御技巧。 通常&#xff0c;XSS Challenges平台提供一…

揭秘数据可视化:五款利器助力决策

在当今这个数据驱动的时代&#xff0c;数据可视化已成为企业决策、数据分析不可或缺的一部分。通过直观、生动的图形、图像&#xff0c;数据可视化能够更快速、更准确地传达信息&#xff0c;帮助企业洞察数据背后的价值。本文将为您介绍几款优秀的数据可视化工具。 一、山海鲸…

数据库开发关键之与DQL查询语句有关的两个案例

案例 案例1 条件分页查询 查看项目经理提供给我们的需求文档 模糊匹配的含义是 只要包含"张"就可以 use dduo;-- 按照需求完成员工管理的条件分页查询 根据输入条件 查询第一页的数据 每页展示10条记录 -- 输入条件&#xff1a; -- 姓名&#xff1a; 张 -- 年龄&…