【发布时间】:2018-04-09 00:37:12
【问题描述】:
除了书名之外,我有一个相同的句子列表。
如何遍历列表并排除相似之处以查找书名?
(这是一个例子,可以是任何相似的短句。)
《蝇王》这本书很经典。
《杀死一只知更鸟》这本书是经典之作。
《麦田里的守望者》这本书很经典。
我遇到的问题是我不能简单地使用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
}
我的想法是将列表中的所有字符串相互比较,排除字符串的相似部分,并留下标题。但我不知道该怎么做。
【问题讨论】:
-
相反,这似乎是使用正则表达式的完美时间。 this 是你要找的吗?
-
我是否理解正确,在您的源数据中,包含书名的句子中有许多不同的前缀和后缀?不只是
"The book named "和" is a classic."? -
@Enigmativity 是的,它可以是许多不同的前缀和后缀。但我总是在列表中添加类似的匹配字符串。
-
如果你的句子列表总是相似的,你可以只使用 Substring 来获取值,如果不是创建一个前缀和后缀列表,然后为每个句子循环通过前缀和后缀找到匹配.找到匹配项后,您可以使用 sentence[x].Substring() 使用匹配项的长度解析出标题。
-
如果它们始终相同,您也可以使用 .Replace 并将前缀和后缀替换为空字符串。
标签: c#