官术网_书友最值得收藏!

  • Visual Basic實例精通
  • 柴相花等編著
  • 103字
  • 2019-03-01 14:47:30

第7章 字符串處理函數

在前面兩章中分別介紹了VB中的基本函數和日期函數,通過前面兩章的介紹,希望讀者能夠熟練掌握這些函數的用法。除此之外,在編程過程中,字符串的使用頻率也很高,本章就來介紹一些字符串的處理函數。

7.1 Filter過濾數組中的字符串

字符串在編程過程中的變化多種多樣,因此關于字符串處理的函數也是多種多樣。本節首先介紹一種可以從很多字符串中過濾出需要的字符串的函數——Filter的應用實例,即過濾輸入的文本。

技術要點

在本實例中主要使用的技術是Filter函數。該函數主要根據指定的篩選條件,從一個已知數組中篩選出滿足條件的字符串數組子集,具體語法如下:

        Filter (Inputstrings,Value[,Include[,compare]])

其中各函數的含義如下:

●參數Inputstrings表示要執行搜索的一維字符串數組。

●參數Value表示篩選條件,即要搜索的字符串。

●參數Include表示返回的子串是否包含Value字符串。如果包含,則是True,Filter函數返回的是包含Value子字符串的數組子集;否則,則是False,Filter返回的是不包含Value子字符串的數組子集。

●參數compare表示字符串比較類型。當compare=vbUseCompareOption時,表示使用Option Compare語句的設置值來執行比較;當compare=vbBinaryCompare時,表示執行二進制比較;當compare=vbTextCompare時,表示執行文字比較;當compare=vbDatabaseCompare時,表示基于數據庫信息進行比較。

實現代碼

        Option Explicit
        Dim Rslt,Prt As Variant                              '定義兩個可變型變量
        '過濾按鈕的Click事件
        Private Sub CmdFilter_Click()
            Dim Str(6)As String                             '定義一個字符串數組變量
            '分別給數組變量賦初值
            Str(0)= "Abcdefgh"                           '給數組第1個元素賦值為"Abcdefgh"
            Str(1)= "cefir"                              '給數組第2個元素賦值為"cefir"
            Str(2)= "nihao"                                      '給數組第3個元素賦值為"nihao"
            Str(3)= "hello"                                      '給數組第4個元素賦值為"hello"
            Str(4)= "你好!"                                     '給數組第5個元素賦值為"你好!"
            Str(5)= "我們都是abc!"                              '給數組第6個元素賦值為"我們都是abc!"
            Str(6)= "學英語從abc開始!"                          '給數組第7個元素賦值為"學英語從abc開始!"
            Rslt=Filter(Str,"abc",True,vbTextCompare)         '過濾數組中帶有"abc"字符串的子集
            TxtShow.Text = ""                                      '置文本框為空
            For Each Prt In Rslt                                     '對于數組中每個元素執行的操作
                TxtShow.Text = TxtShow.Text & vbCrLf & Prt           '在文本框中顯示過濾后的數組元素
            Next
        End Sub
        'Form窗體的Click事件
        Private Sub Form_Click()
            Dim i As Integer                                          '定義一個整型變量
            Dim StrM(5)As String                                    '定義一個字符串數組變量
            For i = 0 To 5
                StrM(i)= "我是" & i & "班的學生。"             '分別給數組變量賦初值
            Next i
            Rslt=Filter(StrM,"學生",True,vbTextCompare)       '過濾數組中帶有"學生"字符串的子集
            For Each Prt In Rslt                                     '對于數組中每個元素執行的操作
                TxtShow.Text=TxtShow.Text&vbCrLf & Prt               '在文本框中顯示過濾后的數組元素
            Next
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程。當單擊當前窗體時,程序的運行結果如圖7.1所示。當單擊“過濾”按鈕時,程序的運行結果如圖7.2所示。

圖7.1 單擊窗體的運行界面圖

圖7.2 單擊過濾按鈕的運行界面圖

然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕,結束程序的運行。

源程序解讀

(1)代碼首先定義了兩個可變型變量Rslt和Prt,分別表示過濾后的字符串集合和遍歷集合的元素變量。

(2)在Form_ Click()事件中,首先定義了一個整型變量i和一個字符串數組變量StrM (5),分別表示循環變量和過濾數組。然后運用For循環語句給字符串數組賦初值。接著由Filter函數從數組中過濾帶有“學生”字符串的數組元素。最后,由For Each循環語句變量過濾后的字符串集合,并把結果由“TxtShow”文本框顯示出來。

(3)當單擊“CmdFilter”命令按鈕時,就觸發CmdFilter_ Click()事件。在該事件中,首先定義一個字符串數組變量Str(6),表示過濾數組。然后直接給數組中的每個元素賦初值。接著由Filter函數從數組中過濾帶有“學生”字符串的數組元素。最后,由For Each循環語句變量過濾后的字符串集合,并把結果由“TxtShow”文本框顯示出來。

7.2 LTrim除去字符串左邊的空白字

在上一節中介紹了,字符串的過濾函數Filter,該函數主要從一個集合中根據選擇條件過濾出一個子集。本節要介紹另外一種去除字符串中左邊空白字符的函數——LTrim的應用實例,即去除輸入字符串左邊的空格。

技術要點

本實例中主要用到的技術是LTrim函數。該函數主要用于去掉字符串左邊的空格,具體語法為:

        LTrim (String)

其中,參數String表示任何有效的字符串表達式,如果String為空,則返回值為Null。

實現代碼

        Option Explicit
        Dim TrimStr As String                             '定義字符串變量
        '去除字符串中空格的事件
        Private Sub Command1_Click()
            TrimStr = LTrim(TrimStr)                   '去除字符串左邊的空格
            TxtShowE.Text = TrimStr                      顯示去除空格后的字符串
        End Sub
        Private Sub Form_Load()
            TrimStr = "   我們都是學生!  "            '賦初始字符串
            TxtShowS.Text = TrimStr                      '顯示初始字符串
        End Sub

按Ctrl+S組合鍵,保存工程,然后按F5鍵運行工程。當單擊啟動按鈕后,程序的運行結果如圖7.3所示。當單擊“去除字符串中的開頭空格”按鈕時,程序的運行結果如圖7.4所示。

圖7.3 去除字符串左邊空格前的界面圖

圖7.4 去除字符串左邊空格后的界面圖

源程序解讀

(1)代碼首先定義一個字符串變量TrimStr,用來存儲進行操作的字符串。

(2)在Form_ Load()事件中,首先給字符串變量賦初始值:“ 我們都是學生! ”。然后,由“TxtShowS”文本框顯示出來。當單擊“Command1”命令按鈕時會觸發Command1的Click事件。

(3)在Command1_ Click()事件中,首先由LTrim函數去除字符串TrimStr左邊的空格,并重新賦值給變量TrimStr。然后由“TxtShowE”文本框顯示出來。

7.3 RTrim除去字符串右邊的空白字

在上一節中介紹了去除字符串左邊空白字的函數LTrim。本節接著介紹另外一種去掉字符串右邊空白字的函數——RTrim的應用實例,即除去輸入字符串右邊的空格。在編程過程中,這兩個函數往往成對出現。

技術要點

本實例運用的主要技術是RTrim函數和Len函數,主要功能和用法如下:

● RTrim函數,主要用于去除字符串右邊的空格。

● Len函數,主要用于求字符串的長度。

RTrim函數的具體語法為:

        RTrim (String)

Len函數的具體語法為:

        Len (String | VarName)

其中,參數String表示任何有效的字符串表達式,如果 String為空,則返回0;參數VarName為任何有效的變量名,即存儲字符串的變量。

實現代碼

        Option Explicit
        Dim TrimStr As String                    '定義字符串變量
        '命令按鈕CmdDel的Click事件
        Private Sub CmdDel_Click()
            TrimStr = RTrim(TrimStr)          '去除字符串變量右邊的空格
            TxtShowA.Text = TrimStr             '顯示去除空格后的字符串
            TxtShowAL.Text = Len(TrimStr)     '顯示去除空格后的字符串長度
        End Sub
        'Form窗體的Load事件
        Private Sub Form_Load()
            TrimStr = "   我們都是學生!    " '初始化字符串
            TxtShowB.Text = TrimStr             '顯示去除空格前的字符串
            TxtShowBL.Text = Len(TrimStr)     '顯示去除空格前的字符串長度
        End Sub

按Ctrl+S組合鍵,保存工程,然后按F5鍵運行工程。當單擊啟動按鈕后,程序的運行結果如圖7.5所示。當單擊“去除字符串中的結尾空格”按鈕后,程序的運行結果如圖7.6所示。

圖7.5 去除字符串右邊空格前的界面圖

圖7.6 去除字符串右邊空格后的界面圖

源程序解讀

(1)代碼首先定義一個字符串變量TrimStr,用來存儲進行操作的字符串。

(2)在Form_ Load()事件中,首先給字符串變量賦初始值:“ 我們都是學生! ”。然后,由“TxtShowB”文本框顯示出來,并由“TxtShowBL”文本框顯示出字符串的長度。

(3)當單擊“CmdDel”命令按鈕時會觸發CmdDel的Click事件。在該事件中,首先由RTrim函數去除字符串TrimStr右邊的空格,并重新賦值給變量TrimStr。然后由“TxtShowA”文本框顯示出來,并由“TxtShowAL”文本框顯示出去掉空格后的字符串長度。

7.4 Trim函數除去字符串左右兩邊的空白字

在前面兩小節中分別介紹了去除字符串左邊空白字的函數LTrim和去除字符串右邊空白字的函數RTrim,如果在編程過程中兩者成對出現,說明字符串左右兩邊的空白字都需要去除。本節就介紹一種這樣的函數——Trim的應用實例,即除去字符串左右兩邊的空格。

技術要點

本實例中主要運用的技術是Trim函數,該函數主要用于去除字符串左右兩邊的空格,具體語法為

        Trim (String)

其中,參數String的含義與前面介紹的一樣。

實現代碼

        Option Explicit
        Dim TrimStr As String                             '定義字符串變量
        '命令按鈕CmdDel的Click事件
        Private Sub CmdDel_Click()
            TrimStr = Trim(TrimStr)                    '去除字符串兩邊的空格
            TxtShowA.Text = TrimStr                      '顯示去除空格后的字符串變量
            TxtShowAL.Text = Len(TrimStr)              '顯示去除空格后的字符串變量長度
        End Sub
        '窗體Form的Load事件
        Private Sub Form_Load()
            TrimStr = "    我們都是學生!     "        '初始化字符串變量
            TxtShowB.Text = TrimStr                      '顯示去除空格前的字符串變量
            TxtShowBL.Text = Len(TrimStr)              '顯示去除空格前的字符串變量長度
        End Sub

按Ctrl+S組合鍵,保存工程,然后按F5鍵,運行工程。當單擊啟動按鈕后,程序的運行結果如圖7.7所示。單擊“去除字符串中的結尾空格”按鈕后,程序的運行結果如圖7.8所示。

圖7.7 去除字符串左右兩邊空格前的界面圖

圖7.8 去除字符串左右兩邊空格后的界面圖

源程序解讀

(1)代碼首先定義一個字符串變量TrimStr,用來存儲進行操作的字符串。

(2)在Form_ Load()事件中,首先給字符串變量賦初始值:“ 我們都是學生! ”。然后由“TxtShowB”文本框顯示出來,并由“TxtShowBL”文本框顯示出字符串的長度。

(3)當單擊“CmdDel”命令按鈕時會觸發 CmdDel的 Click事件。在該事件中,首先由Trim函數去除字符串 TrimStr左右兩邊的空格,并重新賦值給變量 TrimStr。然后由“TxtShowA”文本框顯示出來,并由“TxtShowAL”文本框顯示出去掉空格后的字符串長度。

7.5 InStrRev查找字符串的位置

在前面小節中分別介紹了去除字符串左邊空格的函數LTrim和去除字符串右邊空格的函數RTrim以及去除字符串左右兩邊空格的函數Trim,這三個函數各有利弊,在編程過程中要合理使用。本節介紹另外一種字符串處理的函數——InStrRev的應用實例,即查找指定字符串中指定字符的位置。

技術要點

本節實例中主要使用的技術是InStrRev函數。該函數主要用于查找一個字符串在另一個字符串中出現的位置,查找的順序是從字符串的末尾開始。具體語法為:

        InStrRev(String1,String2 [,Start [,Compare]])

其中各參數的含義如下:

●參數String1表示被查找的字符串。

●參數String2表示要查找的字符串。

●參數Start用來設置每次查找的開始位置,是數值表達式,如果省略,Start的值為-1,表示從上一個字符位置開始查找。

●參數Compare用來設定判斷子字符串時運用的比較方法,具體的比較方式在前面已經介紹過。

實現代碼

        Option Explicit
        Private Sub CmbStr_Click()
            Dim StrVal As Long                                          '定義長整型變量
            Select Case CmbStr.ListIndex
                Case 0
                  StrVal = InStrRev("w.hao123.com","w")         '查找字符w的位置
                  TxtFind.Text = "w.hao123.com"                      '顯示被查找的字符串
                  TxtFindOut.Text = "w"                              '顯示要查找的字符串
                  TxtWhere.Text = StrVal                               '顯示要查找的字符串的位置
                Case 1
                  StrVal = InStrRev("ww.hao123.com","w")        '查找字符w的位置
                  TxtFind.Text = "ww.hao123.com"                     '顯示被查找的字符串
                  TxtFindOut.Text = "w"                              '顯示要查找的字符串
                  TxtWhere.Text = StrVal                               '顯示要查找的字符串的位置
                Case 2
                  StrVal = InStrRev("www.hao123.com","w")       '查找字符w的位置
                  TxtFind.Text = "www.hao123.com"                    '顯示被查找的字符串
                  TxtFindOut.Text = "w"                              '顯示要查找的字符串
                  TxtWhere.Text = StrVal                               '顯示要查找的字符串的位置
            End Select
        End Sub
        '初始化組合框,添加被查找的字符串
        Private Sub Form_Load()
            CmbStr.AddItem "w.hao123.com"                            '給組合框添加"w.hao123.com"
            CmbStr.AddItem "ww.hao123.com"                           '給組合框添加"ww.hao123.com"
            CmbStr.AddItem "www.hao123.com"                          '給組合框添加"www.hao123.com"
        End Sub

按Ctrl+S組合鍵,保存工程,然后按F5鍵,運行工程。當選擇組合框中的“w.hao123.com”項,并查找字符“w”時,程序的運行結果如圖7.9所示。當選擇組合框中的“ww.hao123.com”項,并查找字符“w”時,程序的運行結果如圖7.10所示。

圖7.9 第一種選擇被查字符串的界面圖

圖7.10 第二種選擇被查字符串的界面圖

源程序解讀

(1)在Form_ Load()事件中,初始化“CmbStr”組合框。運用Additem方法分別添加被查字符串的值:“w.hao123.com”、“ww.hao123.com”、“www.hao123.com”。

(2)當單擊“CmbStr”組合框時,就觸發CmbStr的Click事件。

(3)在CmbStr_ Click()事件中,使用Select Case語句,根據CmbStr的ListIndex屬性的值,分別運用InStrRev函數執行在被選擇的字符串中查找字符串“w”的操作。并且由文本框分別顯示被查找的字符串,要查找的字符串以及要查找的字符串的位置。

7.6 String重復指定字符串中的字符

在上一節中介紹了在一個字符串中查找另一個字符串函數InStrRev,這個函數在求子串時非常有用。本節接著介紹一種字符串處理函數——String的應用實例,即按照設定的數字輸出對應的字符。

技術要點

本實例中使用的主要技術是String函數,該函數主要是按照設定的數字,輸出重復的指定字符的字符串。具體語法為:

        String (Number,Character)

其中各參數的含義如下:

●參數Number用來設置輸出字符的個數,即輸出字符串的長度,數據類型是長整型,如果Number為空,則輸出的字符串為Null。

●參數Character表示要輸出的字符串表達式或字符的字符碼,如果Character是多于一個字符的字符串,則輸出的字符串是重復第一個字符的字符串。如果Character為空,則輸出的字符串為Null。

實現代碼

        Option Explicit
        Private Sub CmbStr_Click()
            Dim MyStr As String                               '定義字符串變量
            Select Case CmbStr.ListIndex
                Case 0
                  MyStr = String(10,"*")                '輸出字符*
                  TxtStr.Text = "*"                        '顯示輸出的字符
                  TxtString.Text = MyStr                     '顯示輸出的字符串
                Case 1
                  MyStr = String(10,42)                   '輸出字符碼為42的字符
                  TxtStr.Text = "字符碼為" & "42"        '顯示選擇的字符
                  TxtString.Text = MyStr                     '顯示輸出的字符串
                Case 2
                  MyStr = String(20,"AB")               '輸出字符AB
                  TxtStr.Text = "AB"                       '顯示選擇的字符
                  TxtString.Text = MyStr                     '顯示輸出的字符串
                Case 3
                  MyStr = String(20,"567")              '輸出字符567
                  TxtStr.Text = "567"                      '顯示選擇的字符
                  TxtString.Text = MyStr                     '顯示輸出的字符串
            End Select
        End Sub
        '初始化組合框,分別添加輸出的字符
        Private Sub Form_Load()
            CmbStr.AddItem "*"                             '給組合框添加"*"
            CmbStr.AddItem "字符碼為42"                    '給組合框添加"字符碼為42"
            CmbStr.AddItem "AB"                            '給組合框添加"AB"
            CmbStr.AddItem "567"                           '給組合框添加"567"
        End Sub

按Ctrl+S組合鍵,保存工程,然后按F5鍵運行工程。當選擇組合框中的“*”選項時,程序的運行結果如圖7.11所示。當選擇組合框中的“字符碼為42”選項時,程序的運行結果如圖7.12所示。

圖7.11 選擇輸出字符為*的界面圖

圖7.12 選擇輸出字符碼為42的界面圖

源程序解讀

(1)在Form_ Load()事件中,初始化“CmbStr”組合框。運用Additem方法分別添加選擇輸出的字符:“*”、“字符碼為42”、“AB”和“567”。

(2)當單擊“CmbStr”組合框時,就觸發CmbStr的Click事件。在該事件中,使用Select Case語句,根據CmbStr的ListIndex屬性的值,分別運用String函數執行按照設定的輸出數目輸出選擇的字符。并且由文本框分別顯示選擇的字符和輸出的字符串。

7.7 運用Split函數進行字符分離

在前面的小節中,分別介紹了去除字符串中空格的函數和在字符串中查找子字符串的函數,這些函數都涉及到對已有字符串的處理。本節同樣介紹一種對已有字符串的處理函數——Split的應用實例,即分離輸入字符串中的空格。

技術要點

本節使用的主要技術是Split函數,該函數主要用于從已知字符串中分離出指定的子字符串,該子字符串以一維數組的形式輸出。具體語法為:

        Split (Expression [,delimiter [,count [,compare]]])

其中各參數的含義如下:

●參數Expression表示包含子字符串和分隔符的字符串表達式,如果Expression的長度為0,則函數的返回值是一個空數組。

●參數delimiter用于設置子字符串邊界的字符串或字符,如果delimiter省略,則使用空格符作為分隔符。

●參數count表示要返回的子字符串數,如果 count = -1,則表示返回所有的子字符串。

●參數compare用來設定判斷子字符串時運用的比較方法,具體的比較方式在前面已經介紹過。

實現代碼

        Option Explicit
        Dim TxtStr As String                                           '定義一個字符串變量
        '命令按鈕CmdSplit的Click事件
        Private Sub CmdSplit_Click()
            Dim MyString                                               '定義可變型變量
            Dim i As Integer                                           '定義整型變量
            Dim Counter As Integer                                     '定義整型變量
            Counter = 0
            MyString = Split(TxtStr,,-1,1)                       '分離空格符
            For i = 1 To UBound(MyString,1)
                TxtSL.Text = TxtSL.Text & vbCrLf & MyString(i)      '顯示分離后的數組元素
                Counter = Counter + 1                                 '計數器加1
            Next i
            TxtNumber.Text = Counter                              '顯示分離后數組元素個數
        End Sub
        Private Sub Form_Load()
            TxtStr = "012345610718614819"                       '初始化要分離的字符串
            TxtSplit.Text = TxtStr                                '顯示要分離的字符串
            TxtSplitL.Text = Len(TxtStr)                        '顯示要分離的字符串的長度
        End Sub

按Ctrl+S組合鍵,保存工程,然后按F5鍵運行工程。當單擊啟動按鈕后,程序的運行結果如圖7.13 所示。單擊“分離字符串中的空格”按鈕后,程序的運行結果如圖7.14所示。

圖7.13 分離字符串前的界面圖

圖7.14 分離字符串后的界面圖

源程序解讀

(1)代碼首先定義一個字符串變量TxtStr,用來存儲進行分離操作的字符串。

(2)在Form_ Load()事件中,首先給字符串變量賦初始值:“012345610718614 819”。然后,由“TxtSplit”文本框顯示出來,并由“TxtSplit”文本框顯示出字符串的長度。

(3)當單擊“CmdSplit”命令按鈕時,就觸發CmdSplit的Click事件。

(4)在CmdSplit_ Click()事件中,首先定義一個可變型變量MyString用來存儲分離后的數組元素。兩個整型變量i和Counter分別作為循環變量和計數器,并賦變量Counter的初始值為0。然后,由Split函數分離字符串中的空格,并把分離結果賦值給變量MyString。最后,運用For循環語句逐個的由“TxtSL”文本框顯示出來分離后的數組元素。同時增加計數器的值,循環結束后由“TxtNumber”文本框顯示計數器的值,即顯示分離后數組的元素個數。

7.8 運用StrReverse函數進行反向輸出字符串

在上一節介紹了分離字符串的函數Split,這個函數的用法非常巧妙,并與數組結合起來,希望讀者能夠靈活運用該函數。本節接著介紹另一種對字符串的處理函數——StrReverse的應用實例,即反向輸出輸入的字符串。

技術要點

在本實例中用到的主要技術是StrReverse函數,該函數主要將一個指定的字符串的字符順序反向輸出。具體語法為:

        StrReverse(String)

其中參數String就是字符順序要被反向的字符串,如果String為空,則函數返回的字符串為Null。

實現代碼

        Option Explicit
        Dim Mystr As String                         '定義字符串變量
        '命令按鈕CmdReverse的Click事件
        Private Sub CmdReverse_Click()
            Mystr = StrReverse(Mystr)            '反向字符串
            TxtReverA.Text = Mystr                 '顯示反向后的字符串
        End Sub
        '窗體Form的Load事件
        Private Sub Form_Load()
            Mystr = "Thank You!"                 '初始化反向的字符串
            TxtShow.Text = Mystr                   '顯示反向前的字符串
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程,程序的運行結果如圖7.15所示。當單擊“反向顯示字符串”按鈕后,程序的運行結果如圖7.16所示。

圖7.15 字符串反向前的界面圖

圖7.16 字符串反向后的界面圖

然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕,結束程序的運行。

源程序解讀

(1)代碼首先定義一個字符串變量Mystr,用來存儲進行反向操作的字符串。

(2)在Form_ Load()事件中,首先給字符串變量Mystr賦初始值:“Thank You!”。然后由“TxtShow”文本框顯示出來。

(3)當單擊“CmdReverse”命令按鈕時會觸發CmdReverse的Click事件。

(4)在CmdReverse_ Click()事件中,首先由StrReverse函數把字符串進行反向輸出操作,并重新賦值給變量Mystr,然后由“TxtReverA”文本框顯示出來。

7.9 InStr查找第一個空格

在前面小節中介紹了在已知一個字符串中查找指定子字符串的函數InStrRev。本節介紹另外一種在已知字符串只查找子字符串的函數——InStr的應用實例,即查找指定字符串中的第一個空格。

技術要點

在本實例中用到的主要技術是InStr函數,該函數主要用來指定一個字符串在另一個字符串中最先出現的位置,具體語法為:

        InStr ([Start,]String1,String2[,compare])

其中各參數的含義如下:

●參數Start設置每次查找的開始位置,如果省略,則從第一個字符的位置開始查找。

●參數String1表示被查找的字符串,即接受查找的字符串。

●參數String2表示需要查找的字符串。

●參數compare用來設定判斷子字符串時運用的比較方法,具體的比較方式在前面已經介紹過。

實現代碼

        Option Explicit
        Private Sub CmbFind_Click()
            Dim MyFind As String                                '定義字符串變量
            Dim SpaAddr As Long                                 '定義長整型變量
            Select Case CmbFind.ListIndex
                Case 0
                    MyFind = CmbFind.Tex                       '得到被要查找的字符串
                    SpaAddr = InStr(MyFind," ")           '查找第一個空格的位置
                    TxtShow.Text = MyFind                      '顯示被查找的字符串
                    TxtSpace.Text = SpaAddr                    '顯示第一個空格的位置
                Case 1
                    MyFind = CmbFind.Text                      '得到被要查找的字符串
                    SpaAddr = InStr(MyFind," ")           '查找第一個空格的位置
                    TxtShow.Text = MyFind                      '顯示被查找的字符串
                    TxtSpace.Text = SpaAddr                    '顯示第一個空格的位置
                Case 2
                    MyFind = CmbFind.Text                      '得到被要查找的字符串
                    SpaAddr = InStr(MyFind," ")           '查找第一個空格的位置
                    TxtShow.Text = MyFind                      '顯示被查找的字符串
                    TxtSpace.Text = SpaAddr                    '顯示第一個空格的位置
                Case 3
                    MyFind = CmbFind.Text                       '得到被要查找的字符串
                    SpaAddr = InStr(MyFind," ")            '查找第一個空格的位置
                    TxtShow.Text = MyFind                       '顯示被查找的字符串
                    TxtSpace.Text = SpaAddr                     '顯示第一個空格的位置
            End Select
        End Sub
        '初始化,在組合框中添加要查找的字符串
        Private Sub Form_Load()
            CmbFind.AddItem "Thank You!"                      '給組合框賦值為"Thank You!"
            CmbFind.AddItem "ThankYou!"                      '給組合框賦值為"ThankYou!"
            CmbFind.AddItem " Thank You!"                     '給組合框賦值為"Thank You!"
            CmbFind.AddItem "  Thank You!"                    '給組合框賦值為"  Thank You!"
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程。當選擇組合框中的“Thank You!”選項時,程序的運行結果如圖7.17所示。當選擇組合框中的“ThankYou!”選項時,程序的運行結果如圖7.18所示。

圖7.17 選擇查詢字符串為Thank You!的界面圖

圖7.18 選擇查詢字符串為ThankYou!的界面圖

然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕,結束程序的運行。

源程序解讀

(1)在Form_ Load()事件中,初始化“CmbFind”組合框。運用Additem方法分別添加被查找的字符:“Thank You!”、“ThankYou!”、“Thank You!”、“ Thank You!”。

(2)當單擊“CmbFind”組合框時,就觸發CmbFind的Click事件。

(3)在CmbFind_ Click()事件中,首先定義一個字符串變量MyStr用來存儲被查找的字符串,一個長整型變量,用來存儲查找到第一個空格的位置。然后,使用Select Case語句,根據CmbFind的ListIndex屬性的值,分別運用InStr函數查找字符串中第一個空格的位置。并由“TxtShow”文本框和“TxtSpace”文本框分別顯示選擇的被查找的字符串和查找到的第一個空格的位置。

說明:可以看出InStr函數和InStrRev函數之間的差別是設定查找起始點的參數在語法中的位置不同。

7.10 字符串的字數統計

在前面小節中分別介紹了兩個在字符串中進行查找操作的函數:InStrRev函數和InStr函數,并在上節對二者的區別進行了說明。本節再介紹一種在字符串中進行查找操作的函數——Mid的應用實例,即統計輸入文檔中的字符數。

技術要點

在本實例中用到的主要技術是Mid函數和DoEvents函數,主要功能和用法如下:

● Mid函數,主要用于從一個字符串的指定位置提取出指定數量的字符串。

● DoEvents函數,用于放棄操作,而使操作系統處理其他事情。

Mid函數的具體語法為:

        Mid (String,Start[,Length])

其中,參數String表示接受查找的字符串表達式;參數Start用來設置提取子字符串的起始位置;如果Start大于Len(String),則函數返回Null;參數Length用來設置提取子字符串的長度;如果Length大于包括起始位置在內的String的長度,則函數返回的字符串到String的末尾為止。

DoEvents函數的具體語法為:

        DoEvents()

實現代碼

        Option Explicit
        '打開我的文檔事件
        Private Sub CmdOpen_Click()
            With CommonDialog1
                .InitDir = App.Path & "\文檔"                     '設置文檔路徑
                .Filter = "RTF文檔|*.rtf"                         '過濾文件類型
                .DefaultExt = ".rtf"                              '設置默認情況下的文件類型
                .DialogTitle = "打開RTF文檔"                      '設置打開文檔對話框中的題目
                .ShowOpen                                           '打開文件
                RichTextBox1.FileName = .FileName                   '將文檔載入到Richtextbox控件中
            End With
        End Sub
        '字數統計事件
        Private Sub CmdStatic_Click()
            Dim i As Integer                                         '定義整型變量
            Dim CaStr As String                                      '定義字符串變量
            For i = 1 To Len(RichTextBox1.Text)
                If i Mod 20 Then DoEvents                            '放棄執行,使操作執行其他事情
                CaStr = Mid(RichTextBox1,i,1)                   '獲得分離后的字符
                Select Case CaStr
                  Case"a" To "z","A" To "Z"
                      TxtLetter.Text=Val(TxtLetter.Text)+1        '統計文章中字母的個數
                  Case" "
                      Txtspace.Text=Val(Txtspace.Text)+1         '統計文章中空格的個數
                  Case 0 To 9
                      TxtNumber.Text=Val(TxtNumber.Text)+1       '統計文章中數字的個數
                  Case Else
                      TxtOther.Text = Val(TxtOther.Text)+ 1       '統計文章中其他字符的個數
        End Select
            Next
            '統計總的個數
            TxtSum.Text = Val(TxtLetter.Text)+ Val(Txtspace.Text)+ Val(TxtNumber.Text)+ Val(TxtOther.Text)
        End Sub
        '窗體Form的UnLoad事件
        Private Sub Form_Unload(Cancel As Integer)
            Unload Me                                              '卸載窗體
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程。當選擇導入RTF文檔時,程序的運行結果如圖7.19所示。當導入RTF文檔后,程序的運行結果如圖7.20所示。當單擊“字數統計”按鈕時,程序的運行結果如圖7.21所示。

圖7.19 打開文檔的界面圖

圖7.20 打開文檔后的界面圖

圖7.21 統計結果的界面圖

然后單擊工具欄中的結束按鈕,或者單擊運行窗口的關閉按鈕,結束程序的運行。

源程序解讀

(1)當單擊“CmdOpen”命令按鈕時,就觸發CmdOpen的Click事件。在CmdOpen_ Click ()事件中,運用“CommonDialog1”控件進行文檔的打開操作。操作過程為:首先設置文檔的打開路徑。然后,設置打開文件類型。同時設置默認情況下的文件類型和設置打開文檔對話框中的題目。最后,打開文件,并將打開的文件載入到Richtextbox控件中。

(2)當單擊“CmdStatic”命令按鈕時,就觸發CmdStatic的Click事件。在該事件中,首先定義一個整型變量i,作為循環變量。一個字符串變量CaStr,用來存儲分割后的字符。然后,運用For循環語句對打開文檔進行統計操作。

(3)具體過程為:首先判斷統計的字數是否是20的倍數。如果是,就放棄繼續執行統計操作,改為執行其他事情;否則,由Mid函數得到其中指定的字符,并賦值給CaStr。然后運用Select Case語句,根據CaStr的數值,統計不同類型的字符,并把統計得到的結果由文本框顯示出來,最后顯示出所有字符的統計數字。

(4)在Form_ UnLoad()事件中,執行窗體的卸載操作。

主站蜘蛛池模板: 白河县| 莱阳市| 巴南区| 柘城县| 元谋县| 家居| 邢台市| 衡阳县| 八宿县| 探索| 屏东县| 陵水| 娄烦县| 西城区| 闽侯县| 青州市| 建湖县| 博罗县| 广汉市| 济源市| 乐清市| 信丰县| 海林市| 邯郸县| 和林格尔县| 姜堰市| 定襄县| 轮台县| 肇庆市| 铁岭市| 洛南县| 苏尼特左旗| 香格里拉县| 米易县| 崇明县| 镇原县| 永善县| 视频| 吴江市| 大余县| 广水市|