当前位置: 首页 > 编程笔记 >

VBS中InStrRev函数的第三个参数(Start)使用注意事项

凤修筠
2023-03-14
本文向大家介绍VBS中InStrRev函数的第三个参数(Start)使用注意事项,包括了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,所以尽量看英文文档,虽然其中的错误也不少。

 类似资料:
  • 本文向大家介绍python 函数的缺省参数使用注意事项分析,包括了python 函数的缺省参数使用注意事项分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python 函数的缺省参数使用注意事项。分享给大家供大家参考,具体如下: python的函数支持4种形式的参数:分别是必选参数、 缺省参数、 可变长参数、关键字参数;而且参数的书写顺序也是又一定规定的,顺序如下 下面针对缺省型参数分

  • 问题内容: 在什么情况下Java 8流中会调用“ reduce”的第三个参数? 下面的代码尝试遍历字符串列表,并将每个字符串的第一个字符的代码点值相加。最终的lambda返回的值似乎从未使用过,并且,如果您插入println,则似乎永远不会调用它。该文档将其描述为“组合器”,但我找不到更多详细信息… 问题答案: 您在说这个功能吗? 使用提供的标识,累积和组合功能,对此流的元素进行简化。这等效于:

  • 本文向大家介绍.NET数组使用中的注意事项小结,包括了.NET数组使用中的注意事项小结的使用技巧和注意事项,需要的朋友参考一下 本文分析了.NET数组使用中的注意事项。分享给大家供大家参考。具体分析如下: 1.初始值问题 对于int、double、float等一些值类型数组,没有赋值的情况下, 默认值是0; 而对于String 等引用类型,初始值为null。 2.IndexOutOfRangeEx

  • 本文向大家介绍Go使用defer函数要注意的几个点,包括了Go使用defer函数要注意的几个点的使用技巧和注意事项,需要的朋友参考一下 概述 defer 函数大家肯定都用过,它在声明时不会立刻去执行,而是在函数 return 后去执行的。 它的主要应用场景有异常处理、记录日志、清理数据、释放资源 等等。 这篇文章不是分享 defer 的应用场景,而是分享使用 defer 需要注意的点。 咱们先从一

  • 本文向大家介绍javascript function(函数类型)使用与注意事项小结,包括了javascript function(函数类型)使用与注意事项小结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript function(函数类型)使用与注意事项。分享给大家供大家参考,具体如下: 在ECMAScript中,Function(函数)类型实际上是对象。每个函数都是Fun

  • 本文向大家介绍Android Studio添加第三方库的注意事项,包括了Android Studio添加第三方库的注意事项的使用技巧和注意事项,需要的朋友参考一下 前言 很多人开始安卓入门的学习,都会选择Google官方的Android Studio作为开发工具,由于他跟之前的Eclipse不太一样,所以出的问题也比较多。主要是导入的问题和android studio自带的android 高版本S

  • 本文向大家介绍MySQL修改innodb_data_file_path参数的一些注意事项,包括了MySQL修改innodb_data_file_path参数的一些注意事项的使用技巧和注意事项,需要的朋友参考一下 前言 innodb_data_file_path用来指定innodb tablespace文件,如果我们不在My.cnf文件中指定innodb_data_home_dir和innodb_d

  • 在编程的语境下,“函数”这个词的意思是对一系列语句的组合,这些语句共同完成一种运算。定义函数的时候,你要给这个函数指定一个名字,另外还好写出这些进行运算的语句。定义完成后,就可以通过函数名来“调用”函数。 3.1 函数调用 此前我们已经见识过函数调用的一个例子了: >>> type(42)<class 'int'> 这个函数的名字就是tpye,括号里面的表达式叫做函数的参数。这个函数的结果是返回参