|
楼主 |
发表于 2020-2-6 11:52
|
显示全部楼层
2.6查找字符串
2.6.1InStr函数
可使用InStr函数返回一字符串在另一字符串中的位置,因此,也可以使用该函数确定一个字符串中是否包含有另一个字符串。其语法为:
InStr([Start,]string1,string2[,compare])
其中,参数Start为可选参数,设置查找的起点,如果省略,则从第一个字符的位置开始查找,当指定了参数Compare时,则要指定此参数。参数string1为被查找的字符串,参数string2为要查找的字符串,这两个参数都是必需的。
如果在String1中没有找到String2,返回0;如果找到String2,则返回String2第一个出现的首字符位置(即1到String1的长度);如果String2的长度为零,返回Start。
可看看下面的示例:
Subtest()
DimSearchString,SearchChar,MyPos
SearchString="XXpXXpXXPXXP"'被搜索的字符串
SearchChar="P"'要查找字符串"P"
'从第四个字符开始,以文本比较的方式找起,返回值为6(小写p)
'小写p和大写P在文本比较下是一样的
MyPos=InStr(4,SearchString,SearchChar,1)
Debug.PrintMyPos
'从第一个字符开使,以二进制比较的方式找起,返回值为9(大写P)
'小写p和大写P在二进制比较下是不一样的
MyPos=InStr(1,SearchString,SearchChar,0)
Debug.PrintMyPos
'缺省的比对方式为二进制比较(最后一个参数可省略)
MyPos=InStr(SearchString,SearchChar)'返回9
Debug.PrintMyPos
MyPos=InStr(1,SearchString,"W")'返回0
Debug.PrintMyPos
EndSub
2.6.2InStrRev函数
也可以使用InStrRev函数返回一个字符串在另一个字符串中出现的位置,与InStr函数不同的是,从字符串的末尾算起。其语法为:
InStrRev(String1,String2[,[Start[,compare])
参数String1为被查找的字符串,参数String2为要查找的字符串,这两个参数都是必需的。参数Start为可选参数,设置每次查找开始的位置,若忽略则使用-1,表示从上一个字符位置开始查找。参数Compare为可选参数,表示所使用的比较方法,如果忽略则执行二进制比较。
下面的示例使用了InStr函数和InStrRev函数,相应的结果不同:
Subtest()
DimmyStringAsString
DimsSearchAsString
myString="IlikethefunctionalitythatInsStrRevgives"
sSearch="th"
Debug.PrintInStr(myString,sSearch)'返回8
Debug.PrintInStrRev(myString,sSearch)'返回26
EndSub
-----------------------
2.7提取字符/字符串
2.7.1Left函数
Left函数可以从字符串的左边开始提取字符或指定长度的字符串,即返回包含字符串中从左边算起指定数量的字符。其语法为:
Left(String,CharNum)
其中,如果参数String包含Null,则返回Null;如果参数CharNum的值大于或等于String的字符数,则返回整个字符串。
例如,下面的代码返回指定字符串的前两个字符:
strLeft=Left(“Thisisapig.”,2)
Left函数与InStr函数结合,返回指定字符串的第一个词,例如下面的代码:
str="Thisisapig."
FirstWord=Left(str,InStr(str,"")-1)
2.7.2Right函数
与Left函数不同的是,Right函数从字符串的右边开始提取字符或指定长度的字符串,即返回包含字符串中从右边起指定数量的字符。其语法为:
Right(String,CharNum)
例如:
AnyString="HelloWorld"'定义字符串
MyStr=Right(AnyString,1)'返回"d"
MyStr=Right(AnyString,6)'返回"World"
MyStr=Right(AnyString,20)'返回"HelloWorld"
如果存放文件名的字符串中没有反斜杠(\),下面的代码将反斜杠(\)添加到该字符串中:
IfRight(strFileName,1)<>“”Then
strFileName=strFileName&“\”
EndIf
下面的函数假设传递给它的参数或者是文件名,或者是包含完整路径的文件名,从字符串的末尾开始返回文件名。
PrivateFunctionParseFileName(strFullPathAsString)
DimlngPosAsLong,lngStartAsLong
DimstrFilenameAsString
lngStart=1
Do
lngPos=InStr(lngStart,strFullPath,"\")
IflngPos=0Then
strFilename=Right(strFullPath,Len(strFullPath)-lngStart+1)
Else
lngStart=lngPos+1
EndIf
LoopWhilelngPos>0
ParseFileName=strFilename
EndFunction
2.7.3Mid函数
Mid函数可以从字符串中提取任何指定的子字符串,返回包含字符串中指定数量的字符的字符串。其语法为:
Mid(String,Start[,Len])
其中,如果参数String包含Null,则返回Null;如果参数Start超过了String的字符数,则返回零长度字符串(“”);如果参数Len省略或超过了文本的字符数,则返回字符串从Start到最后的所有字符。
例如,下面的代码:
Str=Mid(“Thisisapig.”,6,2)
将返回文本“is”。
下面的代码:
MyString="MidFunctionDemo"'建立一个字符串
FirstWord=Mid(MyString,1,3)'返回"Mid"
LastWord=Mid(MyString,14,4)'返回"Demo"
MidWords=Mid(MyString,5)'返回"FuncionDemo"
Mid函数常用于在字符串中循环,例如,下面的代码将逐个输出字符:
DimstrAsString
DimiAsInteger
Str=”PrintOuteachCharacter”
Fori=1toLen(str)
Debug.PrintMid(str,i,1)
Nexti
2.7.4Mid语句
Mid语句可以用另一个字符串中的字符替换某字符串中指定数量的字符。其语法为:
Mid(Stringvar,Start[,Len])=string
其中,参数Stringvar代表为要被更改的字符串;参数Start表示被替换的字符开头位置;参数Len表示被替换的字符数,若省略则全部使用string;参数string表示进行替换的字符串。
被替换的字符数量总小于或等于Stringvar的字符数;如果string的数量大于Len所指定的数量,则只取string的部分字符。示例如下:
MyString="Thedogjumps"'设置字符串初值
Mid(MyString,5,3)="fox"'MyString="Thefoxjumps"
Mid(MyString,5)="cow"'MyString="Thecowjumps"
Mid(MyString,5)="cowjumpedover"'MyString="Thecowjumpe"
Mid(MyString,5,3)="duck"'MyString="Theducjumpe"
|
|