【问题标题】:Compare two string and display number of mismatching words from string比较两个字符串并显示字符串中不匹配单词的数量
【发布时间】:2017-03-04 09:26:54
【问题描述】:

我知道有很多技术和方法可以比较两个Strings,并找出两个Strings 是否相等。 我想做这样的事情:

Var Str1 = "Hello How are you?";
var Str2 = "Hello I am ravi.";

比较str2str1 并显示不匹配单词的数量。 两个字符串都包含 4 个单词。它应该显示您错过了来自str1 的三个字。

我有一个网页(网络任务),用户需要在其中收听音频并将其转录。所以我想知道用户从转录的原始音频中漏掉了多少单词。

【问题讨论】:

  • 如果用户完全漏掉了一个单词,以至于字符串的单词数不同怎么办?例如,如果“正确”字符串是“你好,你好吗?”用户说“你好吗?”,他们只漏掉了一个字。即使两个字符串的数字相同,我也会争辩说“你好,你好吗?”和“你今天好吗?”只有两个不匹配,而不是四个不匹配...
  • str 1 中只缺少一个单词,即 Hello。用户输入多少单词并不重要。用户可以写 str2= hello 你好吗?我病了,但很快就会好起来的。但它包含单词你好,所以应该被认为是正确的匹配。

标签: javascript php html string jscript


【解决方案1】:

这就像将两个字符串都转换为数组然后计算数组的差异一样简单。

$arr1 = explode(' ', strtolower($str1));
$arr2 = explode(' ', strtolower($str2));
echo 'You missed ' . count(array_diff($arr1, $arr2)) . ' words from str 1';

【讨论】:

    【解决方案2】:

    使用explode将Strings转换为Arrays,并计算两个Arrays之间的差异:

    $Str1 = "Hello How are you?";
    $Str2 = "Hello I am ravi";
    
    $st1 = (explode(" ", $Str1));
    $st2 = (explode(" ", $Str2));
    
    
    $result = array_diff($st1, $st2);
    
    echo count($result);
    

    【讨论】:

      【解决方案3】:

      在 PHP 中查找和格式化两个字符串之间的差异

      试试这个:https://coderwall.com/p/3j2hxq/find-and-format-difference-between-two-strings-in-php

      【讨论】:

        【解决方案4】:

        你可以修剪',', '?'之类的字符在字符串中。然后将其转换为单词数组,并删除重复的。最后比较一下用户输入数组和标准数组的区别。

        // parse a string to array
        function words($string)
        {
            return array_unique(explode(' ', str_replace(['?', '.', ','], '', $string)));
        }
        
        dd(array_diff(words($array2), words($array1)));  //here user input array2 is the first parameter.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多