Как сопоставить и стереть (потенциально) большую часть текста между определенными точками в C #? - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь найти способ очистки ссылок в документе .txt, загруженном в проект в виде строки через StreamReader.

Во-первых, мне нужно определить, что есть ссылка (она может быть внутри тегов, или она может просто отсутствовать в середине предложения, как http://www.somesite.com)

Я нашел в Интернете классный класс GetStringInBetween , который позволяет мне найти все ссылки в документе.Однако я изо всех сил пытаюсь использовать один и тот же класс для сопоставления найденных ссылок и другой точки - я пытался перейти на разрыв строки, чтобы я мог заменить все между переводом строки и окончанием URL-адреса.- эффективно стирать куски текста, окружающие URL;обычно они говорят что-то вроде «вы можете посетить наш сайт по адресу http: /» и т. д.

Каков наилучший способ а) идентифицировать ссылки в чрезвычайно длинной строке и б) как стереть их И некоторый текствокруг них?

Я также хотел бы отметить, что если я не укажу использовать Encoding.UTF7, текст будет искажен при чтении из текстовых файлов.Я не знаю, может ли это быть источником соответствующих проблем.

Спасибо, дамы и господа:)

1 Ответ

2 голосов
/ 09 декабря 2011

Прежде всего - насколько велик файл, который вы пытаетесь проанализировать?Если он составляет порядка нескольких сотен МБ, то вы можете полностью загрузить его в ОЗУ, что упрощает задачу.

Кодировка UTF-7 не должна вас беспокоить, поскольку все строки .NET внутренне являются UTF-16.и .NET преобразует из UTF-7 в UTF-16 при чтении файла, чтобы вам больше не приходилось беспокоиться о кодировках.

После того, как у вас есть одна большая строка, лучше всего продолжитьиспользуя регулярные выражения на нем.Они также позволяют заменять текст, так что вы можете «очистить» ваш файл одной строкой кода!Конечно, регулярные выражения для соответствующих URL-адресов никогда не будут идеальными (и даже меньше для анализа HTML ), поэтому вы можете ожидать, что некоторые части более экзотических URL-адресов могут время от времени исчезать.Но если вам нужно совершенство, то это может быть ДЕЙСТВИТЕЛЬНО сложно.

В качестве альтернативы, если файл имеет большой размер и вам нужно удалять только одну строку за раз, вы можете попробовать прочитать файл построчноа затем обрабатывать каждую строку отдельно.Если вы найдете и URL в нем, откажитесь от строки.Если URL отсутствует, напишите в целевой файл.Это также очень просто написать.Вы все равно будете зависеть от регулярных выражений для поиска URL.

...