• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Đếm số ký tự trong chuỗi

Các thủ thuật liên quan đến xử lý chuỗi và thời gian
User avatar
NoBi
Quản trị
Quản trị
Posts: 959
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 53 times
Been thanked: 66 times
Contact:

Đếm số ký tự trong chuỗi

Postby NoBi » Tue 15/12/2009 5:14 pm

Thủ thuật: Đếm số ký tự trong chuỗi
Tác giả: Sưu tầm
Mô tả: Đếm số ký tự hoặc từ xuất hiện trong 1 chuỗi


Hàm bên dưới trả về số lần xuất hiện của ký tự (hoặc từ) Chars trong chuỗi OrigString truyền vào. Tham số cuối cùng mặc định là False: kg phân biệt hoa thường.
  1.     Public Function CharCount(ByVal OrigString As String, _
  2.     ByVal Chars As String, Optional ByVal CaseSensitive As Boolean = False) _
  3.     As Long
  4.  
  5.         '**********************************************
  6.        'PURPOSE: Returns Number of occurrences of a character or
  7.        'or a character sequencence within a string
  8.  
  9.         'PARAMETERS:
  10.        'OrigString: String to Search in
  11.        'Chars: Character(s) to search for
  12.        'CaseSensitive (Optional): Do a case sensitive search
  13.        'Defaults to false
  14.  
  15.         'RETURNS:
  16.        'Number of Occurrences of Chars in OrigString
  17.  
  18.         'EXAMPLES:
  19.        'Debug.Print CharCount("FreeVBCode.com", "E") -- returns 3
  20.        'Debug.Print CharCount("FreeVBCode.com", "E", True) -- returns 0
  21.        'Debug.Print CharCount("FreeVBCode.com", "co") -- returns 2
  22.        ''**********************************************
  23.  
  24.         Dim lLen As Long
  25.         Dim lCharLen As Long
  26.         Dim lAns As Long
  27.         Dim sInput As String
  28.         Dim sChar As String
  29.         Dim lCtr As Long
  30.         Dim lEndOfLoop As Long
  31.         Dim bytCompareType As Byte
  32.  
  33.         sInput = OrigString
  34.         If sInput = "" Then Exit Function
  35.         lLen = Len(sInput)
  36.         lCharLen = Len(Chars)
  37.         lEndOfLoop = (lLen - lCharLen) + 1
  38.         bytCompareType = IIf(CaseSensitive, vbBinaryCompare, _
  39.            vbTextCompare)
  40.  
  41.         For lCtr = 1 To lEndOfLoop
  42.             sChar = Mid(sInput, lCtr, lCharLen)
  43.             If StrComp(sChar, Chars, bytCompareType) = 0 Then _
  44.                 lAns = lAns + 1
  45.         Next
  46.  
  47.         CharCount = lAns
  48.  
  49.     End Function


Sử dụng:
1. Có bao nhiêu chữ a trong "caulacbovb.com":

Code: Select all

count = CharCount("caulacbovb.com", "a")

2. Mở rộng ra tính số lần xuất hiện của các ký tự a, b, c, .... trong chuỗi:
[vb] Dim i As Byte, str As String
For i = 65 To 122 'Tu A - z
str = str & "So ky tu " & Chr(i) & " : " & CharCount(TextBox1.Text, Chr(i)) & vbCrLf
Next i[/vb]


:>

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Đếm số ký tự trong chuỗi

Postby truongphu » Tue 15/12/2009 7:48 pm

chào mừng NoBi nhớ nghề, trở lại VB6

Trên đây là Vb6. Tôi bổ sung VBS
RegEx với VB6, viewtopic.php?f=22&t=2039&start=0&hilit=regex

  1. Private Sub Command2_Click()
  2. Set objRegEx = CreateObject("VBScript.RegExp")
  3.                 objRegEx.Pattern = "a" '<- chuôi cân tìm
  4.                objRegEx.Global = True
  5.                 objRegEx.IgnoreCase = True '<- không phân biêt HOA-thuong
  6. Dim Str$, Zz$                               ' phân biêt thì False
  7.    Str = "caulacbovb.com"
  8. Dim Matches
  9.     Set Matches = objRegEx.Execute(Str)
  10.               Zz = Matches.Count & " KÝ TU - VI TRÍ" & vbCrLf
  11.             For i = 0 To Matches.Count - 1
  12.                 Zz = Zz & Matches(i).Value & " " & Matches(i).FirstIndex + 1 & vbCrLf
  13.             Next
  14. MsgBox Zz
  15. End Sub

Với code trên, ta có thể tìm cả chuỗi dài
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Return to “[VB] Chuỗi và Thời gian”

Who is online

Users browsing this forum: No registered users and 0 guests