天天看点

VBA:处理字符串的各种函数InStr 函数Left 函数LTrim、RTrim与 Trim 函数Mid 函数Right 函数Asc 函数Chr 函数Split函数Join函数

目录

InStr 函数

InStr 函数示例

Left 函数

Left 函数示例

LTrim、RTrim与 Trim 函数

LTrim,RTrim,及 Trim 函数示例

Mid 函数

Mid 函数示例

Right 函数

Right 函数示例

Option Compare 语句示例

Asc 函数

Asc 函数示例

Chr 函数

Chr 函数示例

Split函数

Join函数

InStr 函数

返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。

语法

InStr([start, ]string1, string2[, compare])

InStr 函数的语法具有下面的参数:

部分 说明
start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。
string1 必要参数。接受搜索的字符串表达式。
string2 必要参数。被搜索的字符串表达式。
Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。指定一个有效的LCID (LocaleID) 以在比较中使用与区域有关的规则。

设置

compare 参数设置为:

常数 描述
vbUseCompareOption -1 使用Option Compare 语句设置执行一个比较。
vbBinaryCompare 执行一个二进制比较。
vbTextCompare 1 执行一个按照原文的比较。
vbDatabaseCompare 2 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。

返回值

如果 InStr返回
string1 为零长度
string1 为 Null Null
string2 为零长度 Start
string2 为 Null Null
string2 找不到
在 string1 中找到string2 找到的位置
start > string2

说明

InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。

InStr 函数示例

本示例使用 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。
           

Left 函数

返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。

语法

Left(string, length)

Left 函数的语法有下面的命名参数:

部分 说明
string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。

说明

欲知 string 的字符数,使用 Len 函数。

注意 LeftB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是要返回的字符数。

Left 函数示例

本示例使用 Left 函数来得到某字符串最左边的几个字符。

Dim AnyString, MyStr
AnyString = "Hello World"    ' 定义字符串。
MyStr = Left(AnyString, 1)    ' 返回 "H"。
MyStr = Left(AnyString, 7)    ' 返回 "Hello W"。
MyStr = Left(AnyString, 20)    ' 返回 "Hello World"。
           

LTrim、RTrim与 Trim 函数

返回 Variant (String),其中包含指定字符串的拷贝,没有前导空白 (LTrim)、尾随空白 (RTrim) 或前导和尾随空白 (Trim)。

语法

LTrim(string)

RTrim(string)

Trim(string)

必要的 string 参数可以是任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。

LTrim,RTrim,及 Trim 函数示例

本示例使用 LTrim 及 RTrim 函数将某字符串的开头及结尾的空格全部去除。事实上只使用 Trim 函数也可以做到将两头空格全部去除。

Dim MyString, TrimString
MyString = "  <-Trim->  "    ' 设置字符串初值。
TrimString = LTrim(MyString)    ' TrimString = "<-Trim->  "。
TrimString = RTrim(MyString)    ' TrimString = "  <-Trim->"。
TrimString = LTrim(RTrim(MyString))    ' TrimString = "<-Trim->"。
' 只使用 Trim 函数也同样将两头空格去除。
TrimString = Trim(MyString)    ' TrimString = "<-Trim->"。
           

Mid 函数

返回 Variant (String),其中包含字符串中指定数量的字符。

语法

Mid(string, start[, length])

Mid 函数的语法具有下面的命名参数:

部分 说明
string 必要参数。字符串表达式,从中返回字符。如果 string 包含 Null,将返回 Null。
start 必要参数。为 Long。string 中被取出部分的字符位置。如果 start 超过 string 的字符数,Mid 返回零长度字符串 ("")。
length 可选参数;为 Variant (Long)。要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到尾端的所有字符。

说明

欲知 string 的字符数,可用 Len 函数。

注意 MidB 函数作用于字符串中包含的字节数据,如同在双字节字符集(DBCS)语言中一样。因此其参数指定的是字节数,而不是字符数。对于使用 MidB的示例代码,请参阅示例主题中的第二个示例。

Mid 函数示例

本示例使用 Mid 语句来得到某个字符串中的几个字符。

Dim MyString, FirstWord, LastWord, MidWords
MyString = "Mid Function Demo"    建立一个字符串。
FirstWord = Mid(MyString, 1, 3)    ' 返回 "Mid"。
LastWord = Mid(MyString, 14, 4)    ' 返回 "Demo"。
MidWords = Mid(MyString, 5)    ' 返回 "Funcion Demo"。
           

Right 函数

返回 Variant (String),其中包含从字符串右边取出的指定数量的字符。

语法

Right(string, length)

Right 函数的语法具有下面的命名参数:

部分 说明
string 必要参数。字符串表达式,从中最右边的字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。为数值表达式,指出想返回多少字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。

说明

欲知 string 的字符数,用 Len 函数。

注意 RightB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是指定返回的字符数。

Right 函数示例

本示例使用 Right 函数来返回某字符串右边算起的几个字符。

Dim AnyString, MyStr
AnyString = "Hello World"    ' 定义字符串。
MyStr = Right(AnyString, 1)    ' 返回 "d"。
MyStr = Right(AnyString, 6)    ' 返回 " World"。
MyStr = Right(AnyString, 20)    ' 返回 "Hello World"。
           

Option Compare 语句

在模块级别中使用,用于声明字符串比较时所用的缺省比较方法。

语法

Option Compare {Binary | Text | Database}

说明

如果使用,则 Option Compare 语句必须写在模块的所有过程之前。

Option Compare 语句为模块指定字符串比较的方法(Binary、Text 或 Database)。如果模块中没有 Option Compare 语句,则缺省的文本比较方法是 Binary。

Option Compare Binary 是根据字符的内部二进制表示而导出的一种排序顺序来进行字符串比较。在 Microsoft Windows 中,排序顺序由代码页确定。典型的二进制排序顺序如下例所示:

A < B < E < Z < a < b < e < z < _ < _ < _ < _ < _ < ?
           

Option Compare Text 根据由系统区域确定的一种不区分大小写的文本排序级别来进行字符串比较。当使用 Option Compare Text 对相同字符排序时,会产生下述文本排序级别:

(A=a) < ( _=_) < (B=b) < (E=e) < (_=_) < (Z=z) < (_=_)
           

Option Compare Database 只能在 Microsoft Access 中使用。当需要字符串比较时,将根据数据库的区域 ID 确定的排序级别进行比较。

Option Compare 语句示例

该示例使用 Option Compare 语句设置缺省的字符串比较方法。Option Compare 语句只能在模块级使用。

'将字符串比较方法设为 Binary。
Option compare Binary     '这样,"AAA" 将小于 "aaa"。
'将字符串比较方法设为 Text。
Option compare Text    '这样,"AAA" 将等于 "aaa"。
           

Asc 函数

返回一个 Integer,代表字符串中首字母的字符代码。

语法

Asc(string)

必要的 string 参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。

说明

在非 DBCS 系统下,返回值范围为 0 – 255 。在 DBCS 系统下,则为 -32768 – 32767。

注意 AscB 函数作用于包含在字符串中的字节数据,AscB 返回第一个字节的字符代码,而非字符的字符代码。AscW 函数返回 Unicode 字符代码,若平台不支持 Unicode,则与 Asc 函数功能相同。

Asc 函数示例

本示例使用 Asc 函数返回字符串首字母的字符值(ASCII 值)。

Dim MyNumber
MyNumber = Asc("A")    ' 返回 65。
MyNumber = Asc("a")    ' 返回 97。
MyNumber = Asc("Apple")    ' 返回 65。
           

Chr 函数

返回 String,其中包含有与指定的字符代码相关的字符 。

语法

Chr(charcode)

必要的 charcode 参数是一个用来识别某字符的 Long。

说明

0 到 31 之间的数字与标准的非打印 ASCII 代码相同。例如,Chr(10) 可以返回换行字符。charcode 的正常范围为 0 – 255。然而,在 DBCS 系统,charcode 的实际范围为 -32768 到 65535。

注意 ChrB 函数作用于包含在 String 中的字节数据。ChrB 总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW 函数返回包含 Unicode 的 String,若在不支持 Unicode 的平台上,则其功能与 Chr 函数相同。

注意 Visual Basic for the Macintosh 不支持Unicode 字符串。因此,当n 值在128 – 65,535 范围内时, ChrW(n) 不能像在Windows环境中那样返回所有的 Unicode 字符。相反地,当Unicode 的n 值大于127 时,ChrW(n) 会试图做一个“最好的猜测”。因此,在Macintosh 环境中,不能使用ChrW 。

Chr 函数示例

本示例使用 Chr 函数来返回指定字符码所代表的字符。

Dim MyChar
MyChar = Chr(65)    ' 返回 A。
MyChar = Chr(97)    ' 返回 a。
MyChar = Chr(62)    ' 返回 >。
MyChar = Chr(37)    ' 返回 %。
           

Split函数

描述

返回一个下标从零开始的一维数组,它包含指定数目的子字符串。

语法

Split(expression[, delimiter[, limit[, compare]]])

Split函数语法有如下命名参数:

部分 描述
expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
limit 可选的。要返回的子字符串数,–1表示返回所有的子字符串。
compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。

设置值

compare参数的设置值如下:

常数 描述
vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。
vbBinaryCompare 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。

Join函数

描述

返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。

语法

Join(sourcearray[, delimiter])

Join函数语法有如下命名参数:

部分 描述
sourcearray 必需的。包含被连接子字符串的一维数组。
delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。

source:VBA Help

vba
下一篇: VBA字符串