Lọc bỏ dấu tiếng Việt bằng VB.NET

Nếu bạn đang theo đuổi việc lập trình, hẳn bạn đã biết đến lượng mã nguồn to lớn trên Internet. Bạn rất thích nhưng khi chép đoạn mã VB6 hay C nào đó từ trang web vào cửa sổ soạn thảo, bạn sẽ rất mệt vì phải sửa chữa, thậm chí xóa toàn bộ lời chú thích tiếng Việt của tác giả. Trong các công cụ lập trình không hỗ trợ tiếng Việt, phần diễn giải tiếng Việt trong mã nguồn biến thành mớ hỗn độn, rối rắm.
 

Với sự hỗ trợ tiếng Việt Unicode của VB .NET, ta dễ dàng tạo một chương trình lọc bỏ dấu tiếng Việt, tự động chuyển mọi ký tự có dấu thành không dấu.

Bạn hãy mở Visual Studio .NET 2003, tạo một Windows Application mới. Trong cửa sổ thiết kế, bạn tạo lần lượt các điều khiển (control) với thuộc tính như bảng 1.

Loại điều khiển Tên điều khiển Thuộc tính Giá trị

Textbox

TxtViết

.Text

“”

 

 

.Multiline

True

 

 

.ScrollBars

ScrollBars.Both

 

TxtBỏdấu

.Text

“”

 

 

.Multiline

True

 

 

.ScrollBars

ScrollBars.Both

Button

NútBỏdấu

.Text

Bỏ dấu

 

NútĐóng

.Text

Đóng

Việc bỏ dấu được thực hiện như sau: nếu là “á” hay “à” hay “ạ”,… thì đổi thành “a”, nếu là “Á” hay “À” hay “Ạ”,… thì đổi thành “A”,… Để làm được như thế, ta có thể dùng vòng lặp For và câu lệnh If để xét từng ký tự trong TxtViết. Tuy nhiên, với văn bản dài, việc đọc từng ký tự từ đầu đến cuối kết hợp với việc xử lý lệnh If làm cho chương trình chạy rất chậm. Ta nên dùng hàm Replace của String, kết hợp với một mảng hai chiều để thay thế tất cả ký tự có dấu trong TxtViết bằng ký tự không dấu tương ứng.
Cụ thể, bạn tạo một mảng hai chiều với 14 hàng và 18 cột có dạng như bảng 2. Ta qui định việc phân bố giá trị trong mảng như sau:
1. Mỗi đầu hàng là nơi chứa các giá trị không dấu.
2. Trong từng hàng, các ô tiếp theo sẽ chứa các giá trị có dấu.
3. Các ô có nền đen là nơi chứa giá trị trả về (không dấu).
4. Các ô có nền trắng là nơi chứa giá trị tìm kiếm để thay thế.
5. Các ô có nền xám là các ô có giá trị bằng với ô đầu hàng (không thể để trống vì mọi giá trị của ô phải khác rỗng để cung cấp cho hàm Replace).
á à ã â ă
Á À Ã Â Ă
é è ê ế e e e e e e
É È Ê E E E E E E
ó ò õ ô ơ
Ó Ò Õ Ô Ơ
ú ù ũ ư u u u u u u
Ú Ù Ũ Ư U U U U U U
í ì ĩ i i i i i i i i i i i i
Í Ì Ĩ I I I I I I I I I I I I
đ d d d d d d d d d d d d d d d d
Đ D D D D D D D D D D D D D D D D
ý y y y y y y y y y y y y
Ý Y Y Y Y Y Y Y Y Y Y Y Y
Sau khi tạo Mảng(13,17) như bảng 2 trong thủ tục Form_Load, bạn thực hiện việc tìm và thay thế trong thủ tục NútBỏdấu_Click như đoạn mã 1. Bạn sẽ thấy chương trình chạy rất nhanh và chính xác. Bạn có thể tham khảo mã nguồn hoàn chỉnh của chương trình tại www.echip.com.vn.
Đoạn mã 1
Private Sub NútBỏdấu_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles NútBỏdấu.Click
Dim Tạm1, Tạm2 As String
Dim i, j, n As Byte
Tạm1 = TxtViết.Text
For j = 0 To 13
For i = 1 To 17
Tạm2 = Tạm1.Replace(Mảng(j, i), Mảng(j, 0))
Tạm1 = Tạm2
Next
Next
TxtBỏdấu.Text = Tạm1
End Sub

Theo echip

~ bởi duriangroup on Tháng Sáu 16, 2007.

 
%d bloggers like this: