删除CLOSELY匹配字符串C#

时间:2012-11-09 02:15:33

标签: c#

我有一个由紧密匹配的字符串组成的消息。我想从消息中删除紧密匹配的字符串。关闭我的意思是,如果两个字符串匹配其总长度 80%,那么其中一个应被视为重复并删除。

来自System.Linq;或类似策略的distinct()方法不会像我在下面实现的那样工作,因为即使是一个不匹配的字符。

string[] masg = {"Hello World","Hello World One","Hello-World","How are you","How are u"};

var distinctStr = masg.Distinct();
masg="";

foreach(string str in distinctStr)
    masg+=str+"~";

所需输出

  

Hello World~你好吗

怎么做。请提供我应该经历的想法或进一步的概念。感谢。

1 个答案:

答案 0 :(得分:2)

首先需要做的是定义字符串之间的距离,例如使用Levenshtein distance。在那之后,你只需要遍历字符串,只要该集合不包含另一个字符串,其距离低于你想要的字符串就可以将它们添加到一个集合中。