天天看點

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字元串