我有一个由紧密匹配的字符串组成的消息。我想从消息中删除紧密匹配的字符串。关闭我的意思是,如果两个字符串匹配其总长度 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~你好吗
怎么做。请提供我应该经历的想法或进一步的概念。感谢。
答案 0 :(得分:2)
首先需要做的是定义字符串之间的距离,例如使用Levenshtein distance。在那之后,你只需要遍历字符串,只要该集合不包含另一个字符串,其距离低于你想要的字符串就可以将它们添加到一个集合中。