VBS中InStrRev函数的第三个参数(Start)使用注意事项
VBS中InStrRev函数使用过不少,但是几乎没有用过第三个参数,今天才发现第三个参数的用法跟我想的不太一样。
文档中是这么描述InStrRev函数的:
返回某字符串在另一个字符串中出现的从结尾计起的位置。
InStrRev(string1, string2[, start[, compare]])
参数
string1
必选项。接受搜索的字符串表达式。
string2
必选项。被搜索的字符串表达式。
Start
可选项。数值表达式,用于设置每次搜索的开始位置。如果省略,则默认值为 -1,表示从最后一个字符的位置开始搜索。如果 start 包含 Null,则出现错误
compare
可选项。在计算子字符串时,指示要使用的比较类型的数值。如果省略,将执行二进制比较。有关数值,请参阅“设置”部分。
第三个参数用于设置每次搜索的开始位置。如果省略,则默认值为 -1,表示从最后一个字符的位置开始搜索。于是我想当然的认为如果不省略(假设为N),则表示从最后第N个字符的位置开始搜索。至于为什么会有这样的思维定势,可能是文档表述不清,也可能是受到了其他语言的影响。
看一个简单的脚本:
s = http://jb51.net
n = InStrRev(s, "jb51")
WScript.Echo n
n = InStrRev(s, "jb51", 2)
WScript.Echo n
第一次输出8,这没有问题;而第二次居然输出0,表示没有找到字符串jb51。问题在于第三个参数不是表示从最后第N个字符的位置开始搜索,而是从开始第N个字符开始搜索。
所以InStrRev(s, "jb51", 2)相当于InStrRev(Left(s, 2), "jb51"),当然是搜索不到的。
顺便说一下中文文档里对最后一个参数的描述是错误的:
compare 参数可以有以下值:
vbBinaryCompare 执行二进制比较。
vbDatabaseCompare 执行基于包含在数据库(在此数据库中执行比较)中的信息的比较。
正确的是vbBinaryCompare和vbTextCompare,所以尽量看英文文档,虽然其中的错误也不少。
相关推荐
-
VBS教程:函数-InStrRev 函数
InStrRev 函数返回某字符串在另一个字符串中出现的从结尾计起的位置. InStrRev(string1, string2[, start[, compare]]) 参数string1 必选项.接受搜索的字符串表达式. string2 必选项.被搜索的字符串表达式. Start 可选项.数值表达式,用于设置每次搜索的开始位置.如果省略,则默认值为 -1,表示从最后一个字符的位置开始搜索.如果 start 包含 Null,则出现错误 compare 可选项.在计算子字符串时,指示要使用的比较类
-
VBS中InStrRev函数的第三个参数(Start)使用注意事项
VBS中InStrRev函数使用过不少,但是几乎没有用过第三个参数,今天才发现第三个参数的用法跟我想的不太一样. 文档中是这么描述InStrRev函数的: 复制代码 代码如下: 返回某字符串在另一个字符串中出现的从结尾计起的位置. InStrRev(string1, string2[, start[, compare]]) 参数 string1 必选项.接受搜索的字符串表达式. string2 必选项.被搜索的字符串表达式. Start 可选项.数值表达式,用于设置每次搜索的开始位置.如果省略,
-
VBS中InputBox函数的返回值使用技巧
如果用户单击确定或按下 ENTER,则 InputBox 函数返回文本框中的内容.如果用户单击取消,则函数返回一个零长度字符串 (""). 这是参考手册对InputBox函数返回值的说明,简单而明了,还有必要专门写一篇文章来讨论?我知道你一定对标题不屑一顾,换成是我,我也一定会不屑一顾,如果我没有看到百度VBS吧里的一个帖子. 关于Inputbox 疑惑 ---------------------------- 如果用户单击确定或按下 ENTER,则 InputBox 函数返回文本框中
-
nodejs对express中next函数的一些理解
最近公司在使用node做前后端分离,采用的web框架是express,所以对express框架进行了深入的了解,前段时间写了篇关于express路由的文章,但是在那篇文章中貌似少了一个很重要的内容,就是express的next,所以今天单独来说说express的next. 关于next主要从三点来进行说明: next的作用是什么? 我们应该在何时使用next? next的内部实现机制是什么? Next的作用 我们在定义express中间件函数的时候都会将第三个参数定义为next,这个next就是
-
dim函数第三个参数设置截取字符的长度问题
dim函数的第三个参数,也就是截取字符的长度,我在设置这个的时候,出了些问题:response.write mid(up_address,a(i),a(i+1)-1) & "<br />"像我上面这样写的时候,它就会报错,提示无效的过程调用或参数, response.write mid(up_address,a(i),a(i+1)+1) & "<br />"但是当我把其中的a(i+1)-1改为a(i+1)+1时,就能执行了,a
-
python中open函数对文件处理的使用教程
目录 1.open() 1.1 参数1 1.2 参数2 1.3 参数3 2.with open() as 3.open函数常用的方法 3.1 读 3.2 写 3.3 获取文件读写类型 3.4 指针移动 3.5 当前指针位置 3.6 truncate 总结 在python中使用open函数对文件进行处理. 1.open() python打开文件使用open()函数,返回一个指向文件的指针.该函数常用以下三个参数. 1.1 参数1 目标文件的路径+名字.最好使用r"路径"这种原始字符串写法
-
vue2.x中h函数(createElement)与vue3中的h函数详解
目录 1. vue2.x的 h 函数(createElement) 2. vue3 h函数配置项 2.1 v-model实现(以下开始为官网实现) 2.2 v-on 2.3 事件修饰符 2.4 插槽 2.5 component 和 is 2.6 自定义指令 2.7 内置组件 2.8 渲染函数的返回值 2.9 JSX 总结 1. vue2.x的 h 函数(createElement) 使用方法及介绍:(参考官网提取) h函数第一个是标签名字 或者是组件名字,第二个参数是配置项,第三个参数是 inn
-
SqlServer2012中LEAD函数简单分析
LEAD函数简单点说,就是把下一行的某列数据提取到当前行来显示,看示例更能解释清楚,先看测试用脚本 DECLARE @TestData TABLE( ID INT IDENTITY(1,1), Department VARCHAR(20), LastName VARCHAR(20), Rate FLOAT ) INSERT INTO @TestData(Department,LastName,Rate) SELECT 'Document Control','Arifin',17.7885 UNI
-
详解addEventListener的三个参数之useCapture
addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click"):第二个参数表示要接收事件处理的函数:第三个参数为 useCapture,本文就讲解它. 复制代码 代码如下: <div id="outDiv"> <div id="middleDiv"> <div id="inDiv">请在此点击鼠标.</div> </d
-
addEventListener()第三个参数useCapture (Boolean)详细解析
举例 <div id="div1"> <div id="div2"> <div id="div3"> <div id="div4"> </div> </div> </div></div> 如果在 d3 上点击鼠标,事件流是这样的: 捕获阶段 在 div1 处检测是否有 useCapture 为 t
-
MySQL复制问题的三个参数分析
今天星期二,早上居然起晚了,上班迟到了,简直是...废话不多说,在昨天的文章中,我们提到了三个参数,分别是: slave_exec_mode参数: sql_slave_skip_counter=N参数; slave-skip-errors=N参数. 这三个参数都可以解决并行复制中的一些指定的错误,例如duplicate key 1062错误等,今天我们简单试验一下,这三个参数的区别: 01 sql_slave_skip_counter参数 这个参数的设置主要是为了跳过某些错误的"event&qu
随机推荐
- JS实现的base64加密、md5加密及sha1加密详解
- python利用elaphe制作二维条形码实现代码
- JSP 重置按钮清空传入的表单数据实例
- Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
- Vue.js学习笔记之修饰符详解
- 正则(JS)re=new RegExp("^\\d*$");与re=/^\d*$/;之间区别?
- iOS应用中发送HTTP的get请求以及HTTP异步请求的方法
- MySQLdb ImportError: libmysqlclient.so.18解决方法
- asp实现的7xi音乐网的采集源代码
- 解析PHP工厂模式的好处
- Python实现网络端口转发和重定向的方法
- sql表连接查询使用方法(sql多表连接查询)
- SQL Server 2016的数据库范围内的配置详解
- PhotoShop给图片自动添加边框及EXIF信息的JS脚本
- 使用sockets:从新闻组中获取文章(三)
- Android中dumpsys命令用法简单介绍
- Three.js开发实现3D地图的实践过程总结
- Python 实现淘宝秒杀的示例代码
- 详解Node.js中的Async和Await函数
- 详解log4net的使用