Thông tin
  • Đánh dấu xác nhận câu hỏi đã được giải quyết để giúp diễn đàn nâng cao chất lượng [cách sử dụng]
  • Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết [nội qui]
  • 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

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

Gửi bàigửi bởi NoBi » Thứ 3 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.
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  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
Parsed in 0.016 seconds, using GeSHi 1.0.8.11


Sử dụng:
1. Có bao nhiêu chữ a trong "caulacbovb.com":
Mã: Chọn tất cả
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:
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  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
Parsed in 0.000 seconds, using GeSHi 1.0.8.11
Đánh giá chủ đề: Evaluations: 0, 0.00 on the average.Evaluations: 0, 0.00 on the average.Evaluations: 0, 0.00 on the average.Evaluations: 0, 0.00 on the average.Evaluations: 0, 0.00 on the average.Evaluations: 0, 0.00 on the average.
Thanks NoBi for your sharing!
:>
Hình đại diện của thành viên
NoBi
Quản trị
Quản trị
 
Bài viết: 913
Ngày tham gia: Thứ 3 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Đã cảm ơn: 36 lần
Được cảm ơn: 57 lần

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

Gửi bàigửi bởi truongphu » Thứ 3 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

Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  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
Parsed in 0.000 seconds, using GeSHi 1.0.8.11

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
Hình đại diện của thành viên
truongphu
VIP
VIP
 
Bài viết: 4724
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Đã cảm ơn: 13 lần
Được cảm ơn: 471 lần


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

Ai đang trực tuyến?

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