• 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

Tìm từ trong cả một đoạn văn bản

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
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Tìm từ trong cả một đoạn văn bản

Gửi bàigửi bởi truongphu » T.Hai 07/04/2008 11:57 am

Thủ thuật: Tìm từ trong cả một đoạn văn bản
Tác giả: truongphu
Mô tả: PhuongThanh37 là Sư phụ về chuỗi. Code của PhuongThanh37 bao giờ cũng gọn đến bất ngờ. Có lẽ do quá thông thạo nên đôi lúc PhuongThanh37 chủ quan: Đọc vấn đề và viết code trực tiếp trả lời mà chưa Test!

Minh chứng: bài "gửi bởi PhuongThanh37 vào ngày Thứ 3 14/02/2006 12:59 am, Sub TimKiem" có kết quả sai vị trí chuỗi tìm được trong text. Ngoài ra Sub TimKiem chưa hay lắm do nếu kiếm được 1 từ sẽ ngừng lại vì cấu trúc: If -> End If->End Sub.
Là người học sau, hâm mộ code của PhuongThanh37, tôi muốn viết lại đoạn code trên
* Chỉnh lại vị trí tìm thấy
* Tìm cho hết text
* Nhờ Collection ghi các vị trí tìm được... để phục vụ sau nầy


Mã: Chọn hết

  1. Public Enum ChuHoa
  2. CoPhanBiet = 1
  3. KoPhanBiet = 0
  4. End Enum
  5. Sub TimKiem(ByVal strNguon As String, ByVal strTim As String, Optional PbChuHoa As ChuHoa = 1)
  6. Dim intPos As Integer, strFindString As String, strSourceString As String, i&
  7. Dim Data As New Collection
  8. i = 1
  9.     If PbChuHoa = CoPhanBiet Then
  10.         strFindString = strTim
  11.         strSourceString = strNguon
  12.     Else
  13.         strFindString = UCase(strTim)
  14.         strSourceString = UCase(strNguon)
  15.     End If
  16. Do While i < Len(strSourceString) + 1
  17.     intPos = InStr(i, strSourceString, strFindString)
  18.         If intPos Then
  19.             i = intPos + Len(strFindString) - 1
  20.             Data.Add intPos
  21.             intPos = 0
  22.         Else
  23.             If Data.Count > 0 Then MsgBox "Ða tìm thây " & Data.Count & " Kêt qua " & Chr(34) & strTim & Chr(34) Else MsgBox "Không tìm thây" & Chr(34) & strTim & Chr(34)
  24.             Exit Do
  25.         End If
  26. Loop
  27. End Sub

ứng dụng

Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. Call TimKiem(Text1, "tEX", KoPhanBiet)
  3. End Sub


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.2 khách