2009-01-19 49 views

Trả lời

1

Regular Expression sẽ là cách của tôi. ;)

0

Tìm kiếm chuỗi, bạn sẽ muốn tra cứu cụm từ thông dụng. Đối với việc đánh dấu nó, một khi bạn có vị trí của chuỗi con nên đơn giản là đủ để sử dụng nó để thêm vào một cái gì đó để quấn quanh cụm từ.

1

Nếu HTML bạn đang sử dụng XHTML tuân thủ, bạn có thể tải nó dưới dạng tài liệu XML, và sau đó sử dụng XPath/XSL - dài có gió nhưng loại thanh lịch?

Cách tiếp cận tôi đã sử dụng trong quá khứ là sử dụng HTMLTidy để chuyển đổi HTML lộn xộn sang XHTML và sau đó sử dụng XSL/XPath để lấy nội dung trên màn hình vào cơ sở dữ liệu.

Cụm từ thông dụng sẽ làm điều đó, nhưng có thể phức tạp khi bạn cố gắng loại bỏ các thẻ, tên hình ảnh, v.v. để loại bỏ các mặt tích cực sai.

1

Trong trường hợp đơn giản, cụm từ thông dụng sẽ thực hiện.

đầu vào chuỗi = "ttttttgottttttt";
đầu ra chuỗi = Regex.Replace (đầu vào, "đi", "< mạnh > $ 0 </strong >");

sẽ mang lại: "tttttt < strong> đi </strong > ttttttt"

Nhưng khi bạn nói HTML, nếu bạn đang đề cập đến văn bản chính thức trả lại, đó là một chút của một mớ hỗn độn. Giả sử bạn đã có HTML này:

< span class = "firstLetter" > B </span > ook

Để làm nổi bật từ 'Sách', bạn sẽ cần sự giúp đỡ của một renderer HTML thích hợp. Để đơn giản hóa, trước tiên người ta có thể xóa tất cả các thẻ và chỉ để lại nội dung, sau đó thực hiện thay thế thông thường, nhưng nó không cảm thấy đúng.

1

Bạn có thể xem sử dụng Html DOM, một dự án nguồn mở trên SourceForge.net. Bằng cách này, bạn có thể thao tác văn bản theo cách lập trình thay vì dựa vào các biểu thức chính quy.

+0

trong trạng thái alpha có cập nhật lần cuối vào năm 2005, có nghĩa là không còn được duy trì. –

7

Tôi thích sử dụng Html Agility Pack rất dễ sử dụng, mặc dù gần đây không có nhiều cập nhật, vẫn có thể sử dụng được. Ví dụ: lấy tất cả các liên kết

HtmlWeb client = new HtmlWeb(); 
HtmlDocument doc = client.Load("http://yoururl.com");    
HtmlNodeCollection Nodes = doc.DocumentNode.SelectNodes("//a[@href]");   

foreach (var link in Nodes) 
{     
    Console.WriteLine(link.Attributes["href"].Value); 
} 
Các vấn đề liên quan