• Thứ Sáu, 22/04/2005 17:21 (GMT+7)

    Câu hỏi :
    Tôi có 1 file *.txt chứa một số đoạn văn bản tiếng Việt font VNI-Times. Tôi muốn lập trình bằng VB.Net để chèn 1 chuỗi vào file này tại một vị trí nào đó, hoặc thay một chuỗi trong file (ví dụ “Nữ”) bằng một chuỗi khác (ví dụ “Nam”). Đối với file *.doc, làm cách nào để đọc các ký tự tiếng Việt trong đó rồi hiển thị trên textbox?

    Trả lời :

    Các thắc mắc của bạn không liên quan đến ngôn ngữ lập trình VB.Net, mà liên quan đến giải thuật xử lý chuỗi ký tự. Trước hết bạn nên lưu ý rằng mã VNI là mã tiếng Việt dạng tổ hợp, nghĩa là mỗi ký tự có dấu thường được xây dựng từ 2 ký tự thành phần, như vậy độ dài các ký tự không đồng nhất, có ký tự dài 1 byte, có ký tự dài 2 byte, điều này gây khó khăn nhiều trong các giải thuật xử lý chuỗi. Thí dụ bạn muốn chèn chuỗi mới vào vị trí ký tự 5 của chuỗi có sẵn, nhưng vị trí ký tự thứ 5 chưa chắc nằm ở byte thứ 5 của chuỗi mà có thể nằm ở sau đó tùy thuộc vào các ký tự trước đó là 1 byte hay 2 byte. Thường để xử lý dễ dàng các chuỗi tổ hợp, ta nên chuyển chuỗi đó về dạng dựng sẵn (để độ dài các ký tự là như nhau), sau đó xử lý trên chuỗi dựng sẵn, cuối cùng nếu cần, ta chuyển chuỗi kết quả về dạng tổ hợp ban đầu. Riêng các hoạt động xử lý chuỗi như chèn chuỗi con vào chuỗi lớn, thay thế 1 chuỗi con bằng chuỗi mới, tìm kiếm chuỗi con... đều rất phổ dụng nên đã được viết sẵn trong các thư viện lập trình của ngôn ngữ.

     File *.doc của Word không phải là file văn bản thô như file *.txt, nó có định dạng riêng rất phức tạp nên bạn không thể xử lý file này một cách đơn giản như file *.txt. Hiện muốn truy xuất đúng nội dung các thành phần của file *.doc, bạn có 2 cách: dùng linh kiện “Word automation server” để truy xuất file Word theo mô hình đối tượng; hoặc truy xuất trực tiếp nội dung nhị phân file Word, trong trường hợp này bạn cần nắm vững định dạng nhị phân file của Word. Bạn có thể download file “Microsoft Word 97 Binary File Format.htm” trình bày kết quả mò mẫm tìm kiếm của các chuyên gia về định dạng file *.doc.

    Chuyên mục: Lập trình