У меня есть список предложений, которые совпадают, за исключением названия книги.
Как просмотреть список и исключить сходства, чтобы найти название книги?
(Это пример, это может быть любое короткое предложение со сходством.)
Книга «Повелитель мух» — классика.
Книга «Убить пересмешника» — классика.
Книга «Над пропастью во ржи» — классика.
Проблема, с которой я столкнулся, заключается в том, что я не могу просто использовать regex
или Contains()
, чтобы найти Заголовок в предложении, потому что я не знаю, каким будет следующее Предложение или Заголовок Книги. Я просматриваю многие из внешних источников, поэтому я подумал, что смогу извлечь то, что находится между похожими словами.
The book named
Над пропастью во ржи is a classic
.
List<string> sentences = new List<string>() { };
List<string> titles = new List<string>() { };
sentences.Add("The book named Lord of the Flies is a classic.");
sentences.Add("The book named To Kill a Mockingbird is a classic.");
sentences.Add("The book named The Catcher in the Rye is a classic.");
foreach (String title in sentences)
{
// what to do here?
// add title to titles list
}
Моя идея состоит в том, чтобы сравнить все строки в списке друг с другом, исключить похожие части строк, и у вас останется заголовок. Но я не знаю, как это сделать.
Наоборот, это кажется идеальным временем для использования регулярных выражений. это то, что вы ищете?
Я правильно понимаю, что в ваших исходных данных у вас много разных префиксов и суффиксов в предложениях, содержащих названия книг? Это не просто
"The book named "
и" is a classic."
?@Enigmativity Да, это может быть много разных префиксов и суффиксов. Но я всегда добавляю в список похожие совпадающие строки.
Если ваш список предложений всегда похож, вы можете просто использовать Substring, чтобы получить значение, если нет, создать список префиксов и суффиксов, а затем для каждого предложения выполнить цикл по префиксам и суффиксам, чтобы найти совпадение. Когда вы найдете совпадение, вы можете использовать предложения[x].Substring() для анализа заголовка, используя длину совпадений.
Если они всегда одинаковы, вы также можете использовать .Replace и заменить префикс и суффикс пустой строкой.