Bài viết này nhằm giới thiệu với các bạn cách để loại bỏ HTML Tags trong chuỗi bằng C#. Đây là cách hay để hiển thị các chuỗi HTML dưới dạng chuỗi thuần và loại bỏ các định dạng như in đậm, in nghiêng…
Trong lúc hướng dẫn cho một lập trình viên về cách phân tích và trích lọc thông tin từ HTML DOM, tôi mới nghĩ đến việc tìm kiếm một phương thức có thể giúp loại bỏ các HTML tags trong chuỗi để có thể lưu vào CSDL một cách dễ dàng, ngoài ra, nhờ đó, chúng ta sẽ dễ dàng tìm kiếm ở CSDL hơn. Ví dụ tìm chuỗi “Ẩm thực ở Sài Gòn” sẽ dễ chịu hơn nếu không có các HTML Tags trong các chuỗi như “ Ẩm thực ở Sài Gòn ”. Thực may mắn cho tôi là tôi không cần phải tự mình làm quá nhiều, đây là một phương thức mà rất nhiều người quan tâm, và lẽ dĩ nhiên, rất nhiều người bạn đã chia sẻ cách làm đó. Việc của tôi chỉ là học tập lại một chút và chia sẻ cùng các bạn.
Chúng ta sẽ xây dựng một phương thức có thể loại bỏ các HTML Tags ra khỏi một chuỗi:
Nhập vào: “
Ẩm thực ở Sài Gòn ”
Kết quả: Ẩm thực ở Sài Gòn
Chúng ta có nhiều cách để thực hiện điều này, và tôi học được ba cách để chia sẻ cùng các bạn:
Cách 1 – Sử dụng Regex
Chúng ta cài đặt phương thức sử dụng Regex như sau:
Khi đó chúng ta sẽ có thể gọi một cách dễ dàng:
Cách 2 – Sử dụng Compiled Regex ( câu lệnh Regex được biên dịch trước)
Khi các bạn đọc tới “biên dịch trước”, hẳn các bạn sẽ đoán ran ngay là phương thức mới này sẽ có tốc đột thực thi nhanh hơn so với phương thức trên. Tuy nhiên, để xác thực, chúng ta sẽ thử ở một unit test mà tôi sẽ xây dựng ở phía cuối bài viết.
Cách 3 – Sử dụng mảng các ký tự (char array)
Cách này có vẻ thủ công hơn nhiều, và nó sẽ giúp gia tăng tốc độ thực thi, chúng ta cài đặt như sau:
Kiểm thử & so sánh tốc độ thực thi
Tôi sẽ xây dựng một dự án MS Unit Tests có tên là StringUtitlies.Tests để kiểm thử cho các phương thức nói trên, lớp kiểm thử có tên là RemoveHtmlTagsTests.
Đầu tiên chúng ta sẽ xây dựng một phương thức để thực hiện việc loại bỏ HTML Tags và đo thời gian thực hiện theo các cách khác nhau. Có lẽ các bạn đã biết, tôi sẽ sử dụng đối tượng Stopwatch để đo lường thời gian. Và vì để bớt lặp lại mã lệnh, tôi định nghĩa một enum có tên là RemoveMethods và sau đó dùng nó để xây dựng phương thức RemoveHtmlTags như sau:
Tiếp theo tôi sẽ xây dựng một phương thức kiểm thử để đảm bảo ba phương thức cho ra kết quả như tôi mong muốn (dĩ nhiên đây chỉ là một trường hợp đơn giản, nếu muốn kiểm thử kỹ càng hơn, bạn nên tự xây dựng thêm các test method của mình).
Kết quả khi chạy kiểm thử:
Chúng ta có thể thấy rằng, thời gian để chạy Compiled Regex sẽ nhanh hơn sử dụng Regex chưa biên dịch, và sử dụng char array cho tốc độ thực thi cao nhất, cao hơn nhiều so với hai cách còn lại.
Kết luận
Loại bỏ các HTML Tags là một nhu cầu khá lớn đối với tôi khi giúp đỡ các lập trình viên thực hiện một dự án về phân tích và khai thác dữ liệu web, và tôi đã học được vài cách hay để cùng chia sẽ với mọi người. Hy vọng các bạn sẽ thu lượm được thông tin bổ ích từ bài viết này!
Không có nhận xét nào:
Đăng nhận xét