InStrRev 倒查文本

文章目录
  1. 1. 功能
  2. 2. 语法
  3. 3. 参数
  4. 4. 返回值
  5. 5. 示例
  6. 6. 备注

功能

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

语法

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

参数

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

返回值

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

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

示例

1
2
3
4
5
6
7
8
9
10
11
12
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//高级例子
//说明: 提取完整路径的文件名部分内容
//文件路径: 完整路径, 例如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