VB中InStr函数的功能及用法
返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。
语法
InStr([start, ]string1, string2[, compare])
InStr 函数的语法具有下面的参数:
部分 | 说明 |
start | 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。 |
string1 | 必要参数。接受搜索的字符串表达式。 |
string2 | 必要参数。被搜索的字符串表达式。 |
Compare | 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。 |
设置
compare 参数设置为:
常数 | 值 | 描述 |
vbUseCompareOption | -1 | 使用Option Compare 语句设置执行一个比较。 |
vbBinaryCompare | 0 | 执行一个二进制比较。 |
vbTextCompare | 1 | 执行一个按照原文的比较。 |
vbDatabaseCompare | 2 | 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。 |
返回值
如果 | InStr返回 |
string1 为零长度 | 0 |
string1 为 Null | Null |
string2 为零长度 | Start |
string2 为 Null | Null |
string2 不到 | 0 |
在 string1 中到string2 | 到的位置 |
start > string2 | 0 |
说明
InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。
【示例】
本示例使用 InStr 函数来查某字符串在另一个字符串中首次出现的位置。
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' 被搜索的字符串。
SearchChar = "P" ' 要查字符串 "P"。
' 从第四个字符开始,以文本比较的方式起。返回值为 6(小写 p)。
' 小写 p 和大写 P 在文本比较下是一样的。
MyPos = Instr(4, SearchString, SearchChar, 1)
' 从第一个字符开使,以二进制比较的方式起。返回值为 9(大写 P)。
' 小写 p 和大写 P 在二进制比较下是不一样的。
MyPos = Instr(1, SearchString, SearchChar, 0)
本示例使用 InStr 函数来查某字符串在另一个字符串中首次出现的位置。
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' 被搜索的字符串。
SearchChar = "P" ' 要查字符串 "P"。
' 从第四个字符开始,以文本比较的方式起。返回值为 6(小写 p)。
' 小写 p 和大写 P 在文本比较下是一样的。
MyPos = Instr(4, SearchString, SearchChar, 1)
' 从第一个字符开使,以二进制比较的方式起。返回值为 9(大写 P)。
' 小写 p 和大写 P 在二进制比较下是不一样的。
MyPos = Instr(1, SearchString, SearchChar, 0)
' 缺省的比对方式为二进制比较(最后一个参数可省略)。
MyPos = Instr(SearchString, SearchChar) ' 返回 9。
MyPos = Instr(1, SearchString, "W") ' 返回 0。
【备注】
InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。
函数值类型和函数功能如下表所示。
字符串函数
函数名
函数值类型
功能
字符串比较函数实现举例
Chr$(N)
String
求以N为ASCII码的字符
MyPos = Instr(SearchString, SearchChar) ' 返回 9。
MyPos = Instr(1, SearchString, "W") ' 返回 0。
【备注】
InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。
函数值类型和函数功能如下表所示。
字符串函数
函数名
函数值类型
功能
字符串比较函数实现举例
Chr$(N)
String
求以N为ASCII码的字符
Chr(65)=“A”
Str$(N)
String
将N转换为字符串,如果N>0,则返回的字符串中包含一个前导空格,暗示有一个正号
Str$(-12345)=“-12345”
Str(12345)= “ 12345”
Len(C)
Long
求字符串C中包含的字符个数
Len(“Abab字符串4")=8
Ucase$(C)
String
将字符串C中的小写英文字母转换成大写英文字母
Ucase(“abABabc")="ABABABC"
Lcase$(C)
Str$(N)
String
将N转换为字符串,如果N>0,则返回的字符串中包含一个前导空格,暗示有一个正号
Str$(-12345)=“-12345”
Str(12345)= “ 12345”
Len(C)
Long
求字符串C中包含的字符个数
Len(“Abab字符串4")=8
Ucase$(C)
String
将字符串C中的小写英文字母转换成大写英文字母
Ucase(“abABabc")="ABABABC"
Lcase$(C)
String
将字符串C中的大写英文字母转换成小写英文字母
Ucase(“abABabc")="abababc"
Space$(N)
String
产生N个空格组成的字符串
Len(Space(6))=6
String$(N,C)
String
产生N个由C指定的第一个字符组成的字符串,C可以是ASCII码数
String(6,”ABC”)=“AAAAAA”
String(6,65)=“AAAAAA”
Left(C,N)
String
从字符串C的最左边开始,截取N个字符
将字符串C中的大写英文字母转换成小写英文字母
Ucase(“abABabc")="abababc"
Space$(N)
String
产生N个空格组成的字符串
Len(Space(6))=6
String$(N,C)
String
产生N个由C指定的第一个字符组成的字符串,C可以是ASCII码数
String(6,”ABC”)=“AAAAAA”
String(6,65)=“AAAAAA”
Left(C,N)
String
从字符串C的最左边开始,截取N个字符
Left$(“ABCDEF",3)="ABC”
Right$(C,N)
String
从字符串C的最右边开始,截取N个字符
Right$ (“ABCDEF",3)="DEF”
Mid$(C,N1 [,N2 ])
String
从字符串C中N1指定的起始位置处开始,截取N2个字符
Mid(“ABCDEF”,2,3)=”BCD”
Mid(“ABCDEF”,2)=”BCDEF”
Ltrim$(C)
String
删除字符串C中的前导空格
Ltrim(“ ABCD ”)="ABCD ”
Rtrim$(C)
Right$(C,N)
String
从字符串C的最右边开始,截取N个字符
Right$ (“ABCDEF",3)="DEF”
Mid$(C,N1 [,N2 ])
String
从字符串C中N1指定的起始位置处开始,截取N2个字符
Mid(“ABCDEF”,2,3)=”BCD”
Mid(“ABCDEF”,2)=”BCDEF”
Ltrim$(C)
String
删除字符串C中的前导空格
Ltrim(“ ABCD ”)="ABCD ”
Rtrim$(C)
String
删除字符串C中的尾部空格
Ltrim(“ ABCD ”)=" ABCD”
Trim$(C)
String
删除字符串参数中的前导和尾部空格
Ltrim(“ ABCD ”)="ABCD”
StrComp(C1,C2[,N])
Integer
比较字符串C1和字符串C2的大小,N是比较类型,取值0、1或2
StrComp(“ABC",”abc",1)=0
StrComp(“ABC",”abc",0)=-1
StrComp(“abc ",” ABC ",0)=1
InStr([N1,]C1,C2[,N2])
Integer
删除字符串C中的尾部空格
Ltrim(“ ABCD ”)=" ABCD”
Trim$(C)
String
删除字符串参数中的前导和尾部空格
Ltrim(“ ABCD ”)="ABCD”
StrComp(C1,C2[,N])
Integer
比较字符串C1和字符串C2的大小,N是比较类型,取值0、1或2
StrComp(“ABC",”abc",1)=0
StrComp(“ABC",”abc",0)=-1
StrComp(“abc ",” ABC ",0)=1
InStr([N1,]C1,C2[,N2])
Integer
在字符串C1中,从N1开始到N2位置,开始C2,省略N1时从C1头开始,省略N2时到C1尾止。不到时,函数值为0
InStr(2,”ABCDE”,”C”,4)=3
InStr(2,”ABCDEF”,”CDE”)=3
InStr(”ABCDEFGH”,”CDE”)=3
InStr(”ABCDEFGH”,”XY”)=0
说明:(1)表中的C表示是字符串表达式,表中的N表示是数值表达式
(2)对于数值函数Val(C),逗号“,”和美圆符号“$”,都不能被识别;空格、制表符和换行符都将从参数中去掉;当遇到字母E或D 时,将其按单精度或双精度实型浮点数处理。
(3)LenB(C)函数与Len(C)函数功能相近,只不过LenB函数求的是字符串的字节数,而不是字符串中字符的个数。例如:LenB(“ABCabc123")=18,LenB(“字符串”)=6。
(4)对于产生字符串函数String$(N,C),其中,C参数可以为任何有效的数值表达式或字符串表达式,如果为数值表达式,则表示组成字符串的字符的ASCII码;如果为字符串表达式,则其第一个字符将用于产生字符串。
(5)对于字符串左截函数Left(C,N),N参数为数值表达式,其值指出函数值中包含多
InStr(2,”ABCDE”,”C”,4)=3
InStr(2,”ABCDEF”,”CDE”)=3
InStr(”ABCDEFGH”,”CDE”)=3
InStr(”ABCDEFGH”,”XY”)=0
说明:(1)表中的C表示是字符串表达式,表中的N表示是数值表达式
(2)对于数值函数Val(C),逗号“,”和美圆符号“$”,都不能被识别;空格、制表符和换行符都将从参数中去掉;当遇到字母E或D 时,将其按单精度或双精度实型浮点数处理。
(3)LenB(C)函数与Len(C)函数功能相近,只不过LenB函数求的是字符串的字节数,而不是字符串中字符的个数。例如:LenB(“ABCabc123")=18,LenB(“字符串”)=6。
(4)对于产生字符串函数String$(N,C),其中,C参数可以为任何有效的数值表达式或字符串表达式,如果为数值表达式,则表示组成字符串的字符的ASCII码;如果为字符串表达式,则其第一个字符将用于产生字符串。
(5)对于字符串左截函数Left(C,N),N参数为数值表达式,其值指出函数值中包含多
少个字符,如果其值为0,则函数值是长度为零的字符串(即空串);如果其值大于或等于字符串C中的字符数,则函数值为整个字符串。
LeftB函数与Left函数功能相近,只不过LeftB函数求的是字符串的字节数,而不是字符串中字符的个数。LeftB(“ABCDE”,6)=”ABC”。
(6) 对于字符串右截取函数Right(C,N),N参数为数值表达式,其值指出函数值中包含多少个字符。如果其值为0,则函数值为空串;如果其值大于或等于字符串C中的字符个数,则函数值为整个字符串。
RightB函数与Right函数功能相近,只不过RightB函数求的是字符串的字节数,而不是字符串中字符的个数。RightB(“ABCDE”,6)=”CDE”。
(7)N1是数值表达式,其值表示开始截取字符的起始位置。如果该数值超过字符串C中的字符数,则函数值为空串。N2是数值表达式,其值表示要截取的字符数。如果省略该参数,则函数值将包含字符串C中从起始位置到字符串末尾的所有字符。
MidB函数与Mid函数功能相近,只不过MidB函数求的是字符串的字节数,而不是字符串中字符的个数。例如:MidB(“ABCDEFG”,5,8)=”CDEF”。
(8)因为将一字符串赋值给一定长字符串变量时,如字符串变量的长度大于字符串的
LeftB函数与Left函数功能相近,只不过LeftB函数求的是字符串的字节数,而不是字符串中字符的个数。LeftB(“ABCDE”,6)=”ABC”。
(6) 对于字符串右截取函数Right(C,N),N参数为数值表达式,其值指出函数值中包含多少个字符。如果其值为0,则函数值为空串;如果其值大于或等于字符串C中的字符个数,则函数值为整个字符串。
RightB函数与Right函数功能相近,只不过RightB函数求的是字符串的字节数,而不是字符串中字符的个数。RightB(“ABCDE”,6)=”CDE”。
(7)N1是数值表达式,其值表示开始截取字符的起始位置。如果该数值超过字符串C中的字符数,则函数值为空串。N2是数值表达式,其值表示要截取的字符数。如果省略该参数,则函数值将包含字符串C中从起始位置到字符串末尾的所有字符。
MidB函数与Mid函数功能相近,只不过MidB函数求的是字符串的字节数,而不是字符串中字符的个数。例如:MidB(“ABCDEFG”,5,8)=”CDEF”。
(8)因为将一字符串赋值给一定长字符串变量时,如字符串变量的长度大于字符串的
长度,则用空格填充该字符串变量尾部多余的部分,所以在处理定长字符串变量时,删除空格的Ltrim和Rtrim函数是非常有用的。
(9)对于字符串比较函数StrComp(C1,C2[,N] ),N是指定字符串的比较类型。比较类型可以是0、1或2,若比较类型为0,则执行二进制比较,此时英文字母区分大小写;若比较类型为1,则执行文本比较,此时英文字母不区分大小写;若比较类型为2,则是执行基于数据库信息的比较,仅对Microsoft Access起作用。若省略该参数,则默认比较类型为0。
当字符串C1小于字符串C2时,函数值为—1;当字符串C1等于字符串C2时,函数值为0:当字符串C1大于字符串C2时,函数值为1。
(9)对于字符串比较函数StrComp(C1,C2[,N] ),N是指定字符串的比较类型。比较类型可以是0、1或2,若比较类型为0,则执行二进制比较,此时英文字母区分大小写;若比较类型为1,则执行文本比较,此时英文字母不区分大小写;若比较类型为2,则是执行基于数据库信息的比较,仅对Microsoft Access起作用。若省略该参数,则默认比较类型为0。
当字符串C1小于字符串C2时,函数值为—1;当字符串C1等于字符串C2时,函数值为0:当字符串C1大于字符串C2时,函数值为1。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论