• 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
Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 911
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 36 time
Been thanked: 57 time
Liên hệ:

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

Gửi bàigửi bởi NoBi » T.Ba 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":

Mã: Chọn hết

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:
  1.         Dim i As Byte, str As String
  2.         For i = 65 To 122   'Tu A - z
  3.            str = str & "So ky tu " & Chr(i) & " : " & CharCount(TextBox1.Text, Chr(i)) & vbCrLf
  4.         Next i
:>

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4726
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 476 time

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

Gửi bàigửi bởi truongphu » T.Ba 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


Quay về “[VB] Chuỗi và Thời gian”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách