跳到主要内容

InStrRev 倒查文本

🎯功能

以反向顺序查找指定字符串在另一个文本中首次出现的位置, 注意, 所有位置都是正向计数, 仅查找是反向查找

📜语法

结果 = InStrRev(文本内容, 查找内容[, 起始位置[, 对比方式]])

📥参数

参数数据类型解释
文本内容字符串接受查找的文本内容
查找内容字符串要查找的内容
起始位置整数型可选, 表示从哪个位置开始查找, 省略默认-1, 表示从最后一个字符开始查找
对比方式整数型可选, 表示两个文本的对比方式, 0为区分大小写, 1为忽略大小写, 省略默认为0, 若填写本参数, 则必须填写起始位置参数

📤返回

整数型, 返回找到的正向计数位置, 没找到返回0, 参数与返回值关系详见下表

如果InStr 返回
文本内容 为零长度0
文本内容NullNull
查找内容 为零长度起始位置
查找内容NullNull
查找内容 没有找到0
文本内容 中找到 查找内容找到匹配字符串的位置
起始位置 > Len(查找内容)0

💡示例

Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" '要在其中搜索的字符串。
SearchChar = "P" ' 搜索 "P"。

'二进制比较从第10个字符开始。返回 9。
MyPos = InstrRev(SearchString, SearchChar, 10, 0)

'文本比较从最后一个字符开始。返回 12。
MyPos = InstrRev(SearchString, SearchChar, -1, 1)

' 缺省为二进制比较(最后一个参数省略)。返回 0。
MyPos = InstrRev(SearchString, SearchChar, 8)
//高级例子
//说明: 提取完整路径的文件名部分内容
//文件路径: 完整路径, 例如C:\紫猫学院\毕业论文.docx
//返回: 得到文件名, 例如毕业论文.docx
Function zmGetFileName(文件路径)
Dim p
p = InStrRev(文件路径, "\")
If p > 0 Then
zmGetFileName = Right(文件路径, Len(文件路径) - p)
End If
End Function

//说明: 提取完整路径的目录名部分内容
//文件路径: 完整路径, 例如C:\紫猫学院\毕业论文.docx
//返回: 得到目录路径, 例如C:\紫猫学院\
Function zmGetFileDir(文件路径)
Dim p
p = InStrRev(文件路径, "\")
If p > 0 Then
zmGetFileDir = Left(文件路径, p)
End If
End Function

//说明: 提取完整路径的文件后缀名
//文件路径: 完整路径, 例如C:\紫猫学院\毕业论文.docx
//返回: 得到目录路径, 例如docx
Function zmGetFileExt(文件路径)
Dim p
p = InStrRev(文件路径, ".")
If p > 0 Then
zmGetFileExt = Right(文件路径, Len(文件路径) - p)
End If
End Function

//调用例子
Dim 论文路径, 文件名, 目录, 后缀名
论文路径 = "C:\紫猫学院\毕业论文.docx"

文件名 = zmGetFileName(论文路径)
TracePrint "文件名为: " & 文件名

目录 = zmGetFileDir(论文路径)
TracePrint "目录路径为: " & 目录

后缀名 = zmGetFileExt(论文路径)
TracePrint "文件后缀名为: " & 后缀名

📘备注

  • 注意! 本命令与instr的参数语法不一样!
  • 注意! 本命令所有位置都是正向计数的, 仅查找方向是反向! 例如InStrRev("abcdef", "b", 3), 表示从正向数起的第3个字符c开始反向查找abc这部分内容, 找到正向数起的第2个字符b符合查找条件, 最终返回数值2