25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Глава 24. Практически изпит по програмиране (тема 1) 999<br />

знаем, че е имаме някакъв таг (отварящ или затварящ). Краят на тага<br />

символът ">". Така можем да откриваме таговете и да ги премахваме. За да<br />

не получим долепяне на думите в съседни тагове, ще заместваме всеки таг<br />

със символа за празен ред "\n".<br />

Алгоритъмът не е сложен за имплементиране, но дали няма по-хитър<br />

начин? Можем ли да използваме регулярни изрази? С тях лесно можем да<br />

търсим тагове и да ги заместваме с "\n", нали? Същевременно кодът няма<br />

да е сложен и при възникване на грешки по–лесно ще бъдат отстранени.<br />

Ще се спрем на този вариант. Какво трябва да направим? Първо трябва да<br />

напишем регулярния израз. Ето как изглежда той:<br />

]*><br />

Идеята е проста: всеки низ, който започва с "" и завършва с ">", е HTML таг. Ето как можем да<br />

заместим таговете със символ за нов ред:<br />

private static string RemoveAllTags(string str)<br />

{<br />

string textWithoutTags = Regex.Replace(str, "]*>", "\n");<br />

return textWithoutTags;<br />

}<br />

След като написахме тази стъпка, трябва да я тестваме. За целта отново<br />

ще изписваме намерените низове на конзолата чрез Console.WriteLine(…).<br />

Да тестваме кода, който получихме:<br />

HtmlTagRemover.cs<br />

using System.IO;<br />

using System.Text.RegularExpressions;<br />

class HtmlTagRemover<br />

{<br />

private const string InputFileName = "Problem1.html";<br />

private const string Charset = "windows-1251";<br />

static void Main()<br />

{<br />

StreamReader reader = null;<br />

Encoding encoding = Encoding.GetEncoding(Charset);<br />

string line = string.Empty;<br />

StringBuilder result = new StringBuilder();<br />

if (!File.Exists(InputFileName))<br />

{<br />

Console.WriteLine("File " + InputFileName + " not found.");

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!