VBA中处理字符串常用函数(4)

2019-08-30 18:18

Dim sSearch As String

myString = \sSearch = \

Debug.Print InStr(myString, sSearch) '返回8 Debug.Print InStrRev(myString, sSearch) '返回26 End Sub

2.7 提取字符/字符串

2.7.1 Left函数

Left函数可以从字符串的左边开始提取字符或指定长度的字符串,即返回包含字符串中从左边算起指定数量的字符。其语法为: Left(String,CharNum)

其中,如果参数String包含Null,则返回Null;

如果参数CharNum的值大于或等于String的字符数,则返回整个字符串。

例如,下面的代码返回指定字符串的前两个字符: strLeft=Left(“This is a pig.”,2)

Left函数与InStr函数结合,返回指定字符串的第一个词,例如下面的代码: str = \

FirstWord = Left(str, InStr(str, \

2.7.2 Right函数

与Left函数不同的是,Right函数从字符串的右边开始提取字符或指定长度的字符串,即返回包含字符串中从右边起指定数量的字符。其语法为: Right(String,CharNum) 例如:

AnyString = \ ' 定义字符串 MyStr = Right(AnyString, 1) ' 返回 \

MyStr = Right(AnyString, 6) ' 返回 \

MyStr = Right(AnyString, 20) ' 返回 \

如果存放文件名的字符串中没有反斜杠(\\),下面的代码将反斜杠(\\)添加到该字符串中:

If Right(strFileName,1) <> “” Then strFileName=strFileName & “\\” End If

下面的函数假设传递给它的参数或者是文件名,或者是包含完整路径的文件名,从字符串的末尾开始返回文件名。

Private Function ParseFileName(strFullPath As String) Dim lngPos As Long, lngStart As Long Dim strFilename As String lngStart = 1 Do

lngPos = InStr(lngStart, strFullPath, \ If lngPos = 0 Then

strFilename = Right(strFullPath, Len(strFullPath) - lngStart + 1) Else

lngStart = lngPos + 1 End If

Loop While lngPos > 0

ParseFileName = strFilename End Function

2.7.3 Mid函数

Mid函数可以从字符串中提取任何指定的子字符串,返回包含字符串中指定数量的字符的字符串。其语法为: Mid(String,Start[,Len])

其中,如果参数6String包含Null,则返回Null;

如果参数Start超过了String的字符数,则返回零长度字符串(“”);

如果参数Len省略或超过了文本的字符数,则返回字符串从Start到最后的所有字符。 例如,下面的代码: Str=Mid(“This is a pig.”,6,2) 将返回文本“is”。 下面的代码:

MyString = \ '建立一个字符串 FirstWord = Mid(MyString, 1, 3) '返回 \LastWord = Mid(MyString, 14, 4) '返回 \

MidWords = Mid(MyString, 5) '返回 \

Mid函数常用于在字符串中循环,例如,下面的代码将逐个输出字符: #sample code Dim str As String Dim i As Integer

Str=”Print Out each Character” For i=1 to Len(str)

Debug.Print Mid(str,i,1) Next i

2.7.4 Mid语句

Mid语句可以用另一个字符串中的字符替换某字符串中指定数量的字符。其语法为: Mid(Stringvar,Start[,Len])=string

其中,参数Stringvar代表为要被更改的字符串;参数Start表示被替换的字符开头位置;参数Len表示被替换的字符数,若省略则全部使用string;参数string表示进行替换的字符串。 被替换的字符数量总小于或等于Stringvar的字符数;如果string的数量大于Len所指定的数量,则只取string的部分字符。示例如下:

MyString = \ ' 设置字符串初值

Mid(MyString, 5, 3) = \ ' MyString = \Mid(MyString, 5) = \ ' MyString = \

Mid(MyString, 5) = \ ' MyString = \Mid(MyString, 5, 3) = \ ' MyString = \

2.8 删除空格

LTrim函数删除字符串前面的空格; RTrim函数删除字符串后面的空格; Trim函数删除两头的空格。 示例如下:

MyString = \ <-Trim-> \ ' 设置字符串初值

TrimString = LTrim(MyString) ' TrimString = \ \TrimString = RTrim(MyString) ' TrimString = \ <-Trim->\TrimString = LTrim(RTrim(MyString)) ' TrimString = \' 只使用 Trim 函数也同样将两头空格去除

TrimString = Trim(MyString) ' TrimString = \

2.9 返回字符代码

Asc函数返回指定字符串表达式中第一个字符的字符代码。示例如下: MyNumber = Asc(\ ' 返回 65 MyNumber = Asc(\ ' 返回 97 MyNumber = Asc(\ ' 返回 65 [编程方法和技巧]

(1) 在数据验证中用Asc来决定一些条件,如第一个字符是大写还是小写、是字母还是数字。 Private Sub CommandButton1_Click() Dim sTest As String Dim iChar As Integer sTest = TextBox1.Text If Len(sTest) > 0 Then

iChar = Asc(sTest)

If iChar >= 65 And iChar <= 90 Then MsgBox \第一个字符是大写\

ElseIf iChar >= 97 And iChar <= 122 Then MsgBox \第一个字符是小写\ Else

MsgBox \第一个字符不是字母\ End If Else

MsgBox \请在文本框中输入\ End If End Sub

(2) 用Asc函数和Chr函数来创建基本加密的方法。 Private Sub CommandButton2_Click()

Dim MyName As String, MyEncryptedString As String Dim MyDecryptedString As String Dim i As Integer MyName = \

For i = 1 To Len(MyName)

MyEncryptedString = MyEncryptedString &Chr(Asc(Mid(MyName, i, 1)) + 25) Next i

MsgBox \您好!我的名字是\ For i = 1 To Len(MyName)

MyDecryptedString = MyDecryptedString &Chr(Asc(Mid(MyEncryptedString, i, 1)) - 25) Next i

MsgBox \您好!我的名字是\End Sub

2.10 返回数值代表的相应字符

Chr函数返回指定字符码所代表的字符,其语法为: Chr(charcode)

其中参数charcode代表字符码,一般为0~255。例如: MyChar = Chr(65) ' 返回 A MyChar = Chr(97) ' 返回 a MyChar = Chr(62) ' 返回> MyChar = Chr(37) ' 返回 % [编程方法和技巧]

(1) 使用Chr(34)将引号嵌入字符串,如 Chr(34) & sString & Chr(34)

(2) 下面列出了在调用Chr函数时比较常用的字符代码: 代码值描述

0 Null 相当于vbNullChar常数

8 BS 相当于vbBack常数 9 TAB 相当于vbTab常数

10 CR 相当于vbCr和vbCrLf常数 13 LF 相当于vbLf和vbCrLf常数 34 “”引号

2.11返回数组的函数

2.11.1 Filter函数

Filter函数返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。其语法为:

Filter(sourcearray,match[,include[,compare]])

其中,参数sourcearray必需,是要执行搜索的一维字符串数组;参数match必需,是要搜索的字符串;参数include可选,Boolean值,表示返回子串包含还是不包含match字符串,如果include为True,返回包含match子字符串的数组子集,如果include为False,返回不包含match子字符串的数组子集;参数compare可选,表示所使用的字符串比较类型,其设置值为:-1(常数为vbUseCompareOption)表示使用Option Compare语句的设置值来执行比较;0(常数为vbBinaryCompare)表示执行二进制比较;1(常数为vbTextCompare)表示执行文字比较;2(常数为vbDatabaseCompare)只用于Microsoft Access,表示基于数据库信息来执行比较。

如果在sourcearray中没有发现与match相匹配的值,Filter函数返回一个空数组;如果sourcearray是Null或不是一个一维数组,则产生错误。

Filter函数所返回的数组,其元素数是所找到的匹配项目数。 [编程方法和技巧]

(1) Filter函数也可以过滤数字值。此时,应指定Variant类型的字符串sourcearray,并用数字值给数组赋值。同时,也可以将字符串、Variant、Long或Integer数据传递给match。但应注意,返回的字符串表现为被过滤数字的字符串的形式。例如: Sub test()

Dim varSource As Variant, varResult As Variant Dim strMatch As String, i strMatch = CStr(2)

varSource = Array(10, 20, 30, 21, 22, 32)

varResult = Filter(varSource, strMatch, True, vbBinaryCompare) For Each i In varResult Debug.Print i Next End Sub

将返回20,21,22,32

(2) Filter函数可以和Dictionary对象很好地配合使用。可以把Dictionary对象产生的Key值作为一种过滤Dictionary对象成员的快速方法传递给Filter函数,如: Sub test()


VBA中处理字符串常用函数(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年高考英语二轮复习专题(江苏专用):题型组合练(3)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: