想通过2个areatext中输入的英语句子来比较,把areatext1作为期待结果,areatext2作为实际结果。
请问这样2个areatext中句子多了少了,单词错了漏了等情况如何进行比较?是通过单词一一比较还是有其它好的方法?有谁能说一下具体思路?或者代码,最好能带解释,我是菜鸟。

解决方案 »

  1.   

    这个比较复杂啊。
    首先内容完全不确定。
    1.空格分割的问题: 如 str1 = "helle world" str2 = "hellooworld";
    这个你分割了怎么比?要的结果是多了个o。
    2.数组比对:同样需要分割,你不能确定文本框2中的内容是否连贯与否。
    考虑考虑。
      

  2.   

    不知道这么做是有什么目的?
    如果你最终是希望比较的双方应该完全一致,那么只要有一丁点不一致,那就都按“不一致”来通知用户吧。如果你是想提示用户来缩小差异的范围,那建议可以按行分割并逐行比较。想更精确到单词?
    借助正则分析出所有的单词,然后逐一比较吧:
    var array = string.match(/\w+/g); // 返回一个数组,数组的内容是字符串中所有的单词
      

  3.   

    但是一一比较的具体思路是什么呢?
    如果是单词第一个对第一个比较,那么如果实际结果中第二个单词是多出来的,那这样比较的话后面不是都错了?比如“2 week Free Trail offer valid for credit card purchases only.”和“2 the week Free Trail offer valid for credit card purchases only.”其实这2句话也只是第二句多了一个单词,我想要它显示2 the week Free Trail offer valid for credit card purchases only.这样的结果。
      

  4.   

    我个人觉得用空格分开来比较是可以的
    str1 = "helle world" str2 = "hellooworld"
    arry1=split("helle world"," ")
    那么arry1(0)=helle arry1(1)=world
    同理arry2=split("hellooworld"," ")
    那么arry2(0)="hellooworld"
    很明显arry1(0)不等于arry2(0)
    那么"hellooworld"就应该是错误的
      

  5.   


    你这就是在问算法了,这要看你自己是怎么制定这个规则的了。建议不要考虑的太复杂,否则你考虑不完的。
    比如:
    a b c d e f g
    a b x x d c x
    这种情况,请问你是算作b,c之间多出来“x x d”,还是算作b,d之间少了“c”而多了“x x”?