D i» fta ndAr rệ jt(ộ r© Aí lcoj?
76 Chư dng 13: Khảo sát các File Text và xử lý chuỗ
Làm việc với các mã ASCII «
Để quỷt đ ịn h m ã ASCII của m ột m ẫu tự cụ th ể , b ạ n có th ể sử dụng hàm V isual B asic Asc. Ví dụ, câu lệ n h chưcmg tr ìn h sau đây gán số 122 (mã A SC II cho chữ thường) sa n g biến số nguyên sh o rt Asc Code :
Dim AscCode As Short AscCode = Asc("z’')
Ngược lạ i, b ạn có th ể chuyển đổi m ột m ã ASCII th à n h m ộ t m ẫu tự bằng h à m C hr. Ví dụ, câu lệ n h chương tr ìn h sau đây gán m ẫu tự z sa n g biến ký tự le tte r :
Dim letter As Char ỉetter = Chr(122)
C ũng có th ể đ ạ t được k ế t quả y như t h ế nếu b ạ n đ ã sử dụng biến Asc
Code vừa được k h a i báo n h ư được m inh họa ở đây;
letter = Chr(AscCode)
L àm t h ế nào b ạn có th ể so s á n h m ột chuỗi te x t hoặc m ã A SCII với m ột chuỗi te x t hoặc m ã ASCII khác? B ạn chỉ việc sử dụng m ột tro n g sáu to á n tử qu an h ệ m à Visual Basic cung cấp để làm việc với các p h ầ n tử te x t và số. N hữ ng to á n tử quan h ệ n ày được tr ìn h bày tro n g b ản g 13-3.
Bảng 13*3 Các toán tử quan hệ V isual B asic
T o á n t ử Ý n g h ỉa
<> Không bằng với
= Bằng với
< Nhỏ hơn
> Lớn hơn
<= Nhỏ hơn hoặc bằng với
>= Lớn hơn hoặc bằng với
M ột ký tự "lớn hơn" m ộ t ký tự khác nếu m ã A SCII của nó cao hơn. Ví dụ, giá tr ị A SCII của m ẫu tự B lớn hơn giá trị A SCII của m ẫu tự A, do đó biểu thức:
“ A" < “ B”
là true, v à biểu thức: “A” > '‘B’’
là falsẹ
K hi so s á n h h a i chuỗi m à mỗi chuỗi chứa nhiều ký tự, Visual B asic b ắ t đầu b ằn g việc so s á n h ký tự th ứ n h ấ t tro n g chuỗi th ứ n h ấ t với k ý tự thứ n h ấ t tro n g chuỗi th ứ h ai và sau đó xử lý th eo từng ký tự qua các chuỗi đến k h i nó tìm th ấ y m ộ t sự k h ác biệt. Ví dụ, các chuôi M ike và M ichael giống n h au lên đ ến ký tự th ứ b a (k v à c). Bởi vì giá trị ASCII của k lớn h ơ n giá trị ASCII của c, biểu thức;
'‘ M ike” > '‘M ictíael"
là truẹ
N ếu k h ô n g tìm th â y nhữ ng sự khác b iệ t giữa các chuỗi, chúng b ằng nhaụ Nếu các chuỗi b ằn g n hau qua m ột số ký tự n hư ng m ột tro n g các chuỗi tiế p tục v à chuỗi k ia k ế t thúc, chuỗi dài hơn lớn hơn chuỗi n g ắ n hơn. Ví dụ, biểu thức:
"AAAAA” > “ AAA"
th ì truẹ
Phân loại các chuỗi tro n g m ột hộp Text
B ài tậ p sau đây m in h họa cách bạn có th ể sử đụng các to án tử quan hệ ghép chuỗi v à m ột sô' phương thức chuồi để p h â n loại các dòng te x t tro n g m ột hộp tex t. Chương tr ìn h là m ột b ằng chỉnh sửa của tiệ n ích Quick Note và có m ột lệ n h O pen mở m ột file h iệ n có và m ột lệ n h Close đóng filẹ Cũng có m ột lệ n h S o rt T ext tr ê n m enu File m à b ạn có th ể sử đụng đ ể p h ân loại te x t h iệ n h iể n th ị tro n g hộp text.
Bởi vì to à n bộ nội dung của m ột hộp te x t được lưu tr ữ tro n g m ột chuỗi trước tiê n chương tr ìn h p h ả i p h â n chia chuỗi dài đó th à n h các chuỗi con riê n g lẻ nhỏ hơn. Sau đó nhữ ng chuỗi này có th ể dược p h ân loại b ằng việc sử dụng th ủ tục S hell S o rt Sub, m ột thường trìn h p h ân loại dựa vào một th u ậ t to á n được tạo r a bởi D onald Shell vào n ăm 1959. Để đơn g iả n hóa các tá c vụ này, m ột module được tạo cho th ủ tục Shell S ort sub sao cho nó có th ể được gọi từ b ấ t kỳ th ủ tục sự kiện nào tro n g project. (Để b iế t thêm th ô n g tin về các module, xem chưcmg 10). Mặc dù b ạn đ ã học cách sử dụng phương thức A rray S o rt tro n g chương 11, như ng th ủ tục S hell S o rt là một công cụ lin h h o ạ t hcín v à tù y biến hơn. Xây dựng thường trìn h ngay từ đầu cũng cho b ạn th ê m m ột ch ú t k in h nghiệm với việc xử lý các g iá tr ị tex t - m ột mục đích học tậ p qu an trọ n g của chương nàỵ
M ột k h ía cạn h th ú vị khác của chương trìn h này là thường tr ìn h xử lý các dòng tro n g đối tượng hộp tex t. Chúng ta muốn chương tr ìn h này có th ể