InStrRev 倒查文本
🎯功能
以反向顺序查找指定字符串在另一个文本中首次出现的位置, 注意, 所有位置都是正向计数, 仅查找是反向查找
📜语法
结果 = InStrRev(文本内容, 查找内容[, 起始位置[, 对比方式]])
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
文本内容 | 字符串 | 接受查找的文本内容 |
查找内容 | 字符串 | 要查找的内容 |
起始位置 | 整数型 | 可选, 表示从哪个位置开始查找, 省略默认-1, 表示从最后一个字符开始查找 |
对比方式 | 整数型 | 可选, 表示两个文本的对比方式, 0 为区分大小写, 1 为忽略大小写, 省略默认为0 , 若填写本参数, 则必须填写起始位置 参数 |
📤返回
整数型
, 返回找到的正向计数位置, 没找到返回0, 参数与返回值关系详见下表
如果 | InStr 返回 |
---|---|
文本内容 为零长度 | 0 |
文本内容 为 Null | Null |
查找内容 为零长度 | 起始位置 |
查找内容 为 Null | Null |
查找内容 没有找到 | 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