我是初学者,我知道寻找字符串的位置可以使用Instr函数,但是如果我寻找的字符在一个字符串中出现n次,我想随便找到其中的一次的位置,怎么自己编写一个函数来实现呢?请大家指教!!~~
根据楼上的我把原来写的改了下,看这样可以吗?
Public Function InStrL(n As Integer,
inString As String, srchString As String) As Integer
Dim iCurPos ,i As Integer
If Len(srchString)<>0 Then
iCurPos = 1
for i = 1 to n
iCurPos = InStr(iCurPos, inString, srchString)
Next iCurPos
End If
InStrL = iCurPos
End Function
关于为什么As Long:
VB中字符串的长度最大为约2,147,483,647字节,所以要用Long类型来存储。
[QUOTE]String 数据类型
字符串有两种:变长与定长的字符串。
变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。
注意 Public 定长字符串不能在类模块中使用。
String 之字符码的范围是 0 到 255。字符集的前 128 个字符(0 到 127)对应于标准的 U.S. 键盘上的字符与符号。这前 128 个字符与 ASCII 字符集中所定义的相同。后 128 个字符(128 到 255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String 的类型声明字符为美元号 ($)。[/QUOTE]
Private Function fncGetStrNum(InString As String, InSeach As String, InCount As Integer) As Long
Dim i As Long, llCount As Long
Dim llLength As Long
i = 1: llCount = 0
llLength = Len(InString)
fncGetStrNum = -1
Do While i <= llLength
If InStr(i, InString, InSeach) > 0 Then
If llCount = InCount - 1 Then
fncGetStrNum = InStr(i, InString, InSeach)
Exit Do
End If
i = InStr(i, InString, InSeach) + Len(InSeach)
llCount = llCount + 1
End If
Loop
End Function
Private Sub Command1_Click()
MsgBox fncGetStrNum("abcdabcdabcdabcdabcd", "ab", 3)
End Sub