Как можно избежать CR и LF при поиске в файле фразы, которая занимает две строки? - PullRequest
2 голосов
/ 16 января 2012

Я пытаюсь найти в Html-файле список слов или фраз и записать файл обратно с добавленными html-тегами вокруг этих слов / фраз.Остальная часть файла должна оставаться как есть.Я не знаю, как обойти ситуацию, когда фраза разбита на две строки.Кто-нибудь может помочь?Я новичок в этом, поэтому, пожалуйста, будьте явными в своем ответе.

Вот часть входного файла: (теги HTML p находятся в другой строке)

<p>
The thousand injuries of Fortunato I had borne as I best could, but
when he ventured upon insult, I vowed revenge.  You, who so well know
the nature of my soul, will not suppose, however, that I gave utterance
to a threat.  <i>At length</i> I would be avenged; this was a point definitely

и воткод на данный момент:

    //get the table of words
    DataTable table = LibraryAccess.GetWords(titleID);

    using (StreamReader streamReader = File.OpenText(fileUploadPath))
    {
        inputString = streamReader.ReadToEnd();
        streamReader.Close();
        textCopy.Append(inputString);
    }

    if (inputString != null)
    {
        inputString = inputString.ToUpper();

        foreach (DataRow r in table.Rows)
        {
            searchWord = (r["Word"].ToString()).ToUpper();
            wordLength = searchWord.Length;
            foundIndex = inputString.IndexOf(searchWord);

            //if (foundIndex >= 0)
            //{

                //Use the Stringbuilder to modify the output file, e.g. add Bold tags
                //around the word/expression
            //}

            foundIndex = -1;

        }
    }
    else
    {
        Response.Write("input string is empty");
    }
  }  

Слово, которое я ищу, это «дал высказывание» В исходном файле после высказывания есть CRLF, поэтому Indexof не находит Слово.Я мог бы легко заменить CRLF на пустой, но мне нужно поместить их обратно в файл, когда я выписываю измененную версию.Я не знаю, как их сохранить.

Есть мысли о том, как сделать это эффективно?Я хочу сделать для различных длин файлов.Первоначально я делал это с ReadLIne (), и предпочел бы это по причинам памяти, но столкнулся с той же проблемой.Спасибо

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Как правило, в вашей ситуации я бы попытался получить простой текст нашего HTML-кода и затем выполнить поиск.Это, вероятно, может быть достигнуто с помощью HtmlAgilityPack, но есть также проект CodeProject , который делает именно это с помощью нескольких уродливых запросов RegEx.Я не использовал его, поэтому не знаю, исправит ли это разрывы в новых строках HTML-кода, но, возможно, оно того стоит.

0 голосов
/ 16 января 2012

Как насчет быстрой обработки HTML-кода перед его обработкой? Бросив его через HtmlAgilityPack , вам очень поможет работа по извлечению текста из документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...