主页 > 知识库 > 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,所以尽量看英文文档,虽然其中的错误也不少。

您可能感兴趣的文章:
  • VBS教程:函数-InStrRev 函数

标签:邢台 四平 鹤壁 文山 铜川 西安 湖州 海口

巨人网络通讯声明:本文标题《VBS中InStrRev函数的第三个参数(Start)使用注意事项》,本文关键词  VBS,中,InStrRev,函数,的,第,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《VBS中InStrRev函数的第三个参数(Start)使用注意事项》相关的同类信息!
  • 本页收集关于VBS中InStrRev函数的第三个参数(Start)使用注意事项的相关信息资讯供网民参考!
  • 推荐文章