C# 如何在C语言中检查两个字符串的部分相似性#

C# 如何在C语言中检查两个字符串的部分相似性#,c#,C#,C#中是否有检查两个字符串相似性百分比的函数 例如,我有: var string1="Hello how are you doing"; var string2= " hi, how are you"; 和 function(string1, string2) 将返回相似性比率,因为“how”、“are”、“you”等词出现在行中 或者更好,返回60%的相似性,因为“how”、“are”、“you”是string1的3/5 C#中是否存在任何函数,哪些函数可以做到这一点 您可以创建一个函

C#中是否有检查两个字符串相似性百分比的函数

例如,我有:

var string1="Hello how are you doing"; 
var string2= " hi, how are you";

function(string1, string2) 
将返回相似性比率,因为“how”、“are”、“you”等词出现在行中

或者更好,返回60%的相似性,因为“how”、“are”、“you”是string1的3/5


C#中是否存在任何函数,哪些函数可以做到这一点

您可以创建一个函数,将两个字符串拆分为数组,然后对其中一个字符串进行迭代,以检查另一个字符串中是否存在该单词


如果你想得到它的百分比,你必须计算单词的总数,看看有多少是相似的,然后根据这个数字创建一个数字。

字符串相似性的一个常用度量是所谓的或编辑距离。在这种方法中,定义了一组特定的编辑操作。Levenshtein距离是从第一个字符串获取第二个字符串所需的最小编辑步骤数。与之密切相关的是,它使用一组不同的编辑操作


从算法上讲,Levenshtein距离可以使用计算,这被认为是有效的。但是,请注意,这种方法实际上并没有考虑单个单词,也不能直接用百分比表示相似性。

现在我冒着风险在这里给出我的建议,但是在您试图获得接近但不太复杂的东西的情况下,然后有很多比Levenshtein距离更简单的解决方案,如果你需要exakt结果并且有时间编写代码,这是完美的

如果您在准确性方面稍有松懈,那么我将遵循以下简单规则:

  • 比较文字优先
    (strearch==strReal)
    -如果匹配退出
  • 将搜索字符串和实字符串转换为小写
  • 从字符串中删除元音和其他字符
    [aeiou-“!]

    现在您有两个已转换的字符串。您的搜索字符串:

    mths dhlgrn mtbrn
    
    和你真正的字符串进行比较

    rstrnt mths dhlgrn
    
  • 比较转换后的字符串,如果它们匹配退出

  • 使用简单拆分函数或使用正则表达式仅按搜索字符串的单词拆分搜索字符串
    \W+
  • 通过将100除以零件数量来计算一个零件的虚拟值(重量)-在这种情况下
    33
  • 将搜索字符串的每个部分与 如果包含实数字符串,则将每个匹配项的值添加到总重量中。在本例中,我们有三个元素和两个匹配项,因此结果是
    66
    -因此66%匹配
  • 这个方法很简单,可以扩展到越来越详细的地方,实际上你可以使用步骤1-7,如果步骤7返回的值超过50%,那么你就认为你有一个匹配项,否则你会使用更复杂的计算


    好的,现在不要告诉我太快,因为其他答案都是完美的,这只是一个懒惰开发人员的解决方案,可能很有价值,结果满足预期。

    “你好”。包含(“你好”)
    返回
    true
    ;看一看。实际上,这是对一个内容相同的不同问题的回答:)