c # Большое количество текста, чтобы разделить на блоки - PullRequest
0 голосов
/ 17 ноября 2010

C # У меня большой блок текста. этот текст разделен на единицы комментариев текст выглядит так (чтобы я не тратил время на объяснение того, что вы видите)

MikeSmith randdesign глава 1, параграф 1 книга ранддизайн а :) комментарии к книге бесполезны

Johnblack randdesign глава 1, параграф 1 книга ранддизайн а :) комментарии к книге бесполезны, если книгу оставить открытой, а иногда эти строки могут быть множественными и длинными комментариями

Уиллсмит Рэнддизайн, глава 1, параграф 1 книга ранддизайн а :) нет комментариев к книге бесполезно

Как вы можете видеть, этот блок текста интересен, так как я новичок, у меня очень мало опыта в кодировании, у меня есть поваренная книга c # 3.0, и я пытаюсь применить поиск местоположения всех вхождений строки в другой строке .

есть несколько констант, которые я могу использовать

1 имена пользователей всегда будут одинаковыми. (Уиллсмит) и у меня 20 пользователей.

2 структура всегда начинается с имени пользователя

3 фактический контент, который я хочу импортировать, всегда начинается с a :) b :) c:)

У меня следующие вопросы

a :) Является ли поиск местоположения всех вхождений строки в другой строке наилучшим способом поиска начала и конца моих данных?

b :) Есть ли более быстрый способ извлечь данные из текста?

c :) иногда пользователь цитирует другого пользователя, если я ищу имена, я могу получить ложные срабатывания. как мне справиться с этим?

Спасибо за помощь

1 Ответ

1 голос
/ 17 ноября 2010

а: Да, это очень легко сделать. Предполагая, что ваш блок текста представляет собой одну огромную строку, и эта строка называется 's', вы можете разделить текст по символу новой строки, пройтись по каждой строке и получить комментарии следующим образом:

string s = @"
MikeSmith randdesign chapter 1 paragraph 1 book randdesign a:) comments on the book are futile

Johnblack randdesign chapter 1 paragraph 1 book randdesign a:) comments on the book are futile if the book is left open and sometimes these lines can be multiple and long comments

willsmith randdesign chapter 1 paragraph 1 book randdesign a:) no comments on the book are futile
";

foreach (string line in s.Split('\n'))
{
    if (line.Trim() != "")
    {
        string comments = line.Substring(line.IndexOf("a:) ") + 4);
    }
}

b: Возможно, но это будет довольно быстро для вас.

c: Попробуйте изменить метод IndexOf (), если вам нужно. Вы можете настроить его так, чтобы искать что-нибудь, например, «b :)» и «c :)», как вы упоминали выше.

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