我不明白以下任何结果。我知道 InStrRev 给出了最后一个“匹配”的位置(从右到左)并且当我不给出开始位置时可以理解结果。无论从左还是右开始,1 或 2 都应该给出 0 以外的值。
Private Sub Form_Load()
Dim TestString As String
TestString = "ABCDEFGHCIJK"
msgbox = InStrRev(TestString, "C", 1) 'produces 0 if optional start parameter is 1 or 2
msgbox = InStrRev(TestString, "C", 3) 'produces 3 if start parameter is 3-8
msgbox = InStrRev(TestString, "C", 9) 'produces 9 if start parameter is 9-12
'13+ produces 0 as expected since its length of string is only 12
End Sub
有关函数的 Microsoft 文档:access & visual studio 。在 Visual Studio 页面上,我尝试了页面底部的示例并得到了相同的结果,所以我知道它的工作原理。然而我的大脑还没 react 过来。我也理解带 & 不带起始位置的 InStr 函数
最佳答案
天哪,我刚刚明白了!我很糟糕,我有想太多的倾向。以下是我认为我所关心的内容,并且一些文档没有明确说明:
- 两个函数 开始 位置从左侧开始
- 返回值是原始字符串中的字符位置(如果找到),无论您要求函数在字符串中的哪个位置开始搜索
如果没有HansUp,我就无法弄清楚这一点。 。希望以下是另一种看待它的方式,以防其他人有同样的问题理解:
下面返回 5。在 A 之前,位置为 1,在 B 之前为 2,依此类推。我们告诉它从 C 之前开始并搜索字符串的剩余部分 (CDEFGHIJKLMN),其中仍然包含 E
InStr(3, "ABCDEFGHIJKLMN", "E")
下面返回 0。我们告诉它从 C 之前开始并搜索字符串 (AB) 中不包含 E 的剩余部分。字符串的其余部分位于 AB 上的原因是因为它从右到左搜索
InStrRev("ABCDEFGHIJKLMN", "E", 3)
关于ms-access - 提供起始位置时 InStrRev 的行为不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928573/