首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

rails 比较两个字符串的相像度

2012-09-16 
rails 比较两个字符串的相似度#比较两个字符串,然后返回两个字符串的相似度#相似度以小数的形式返回#比较

rails 比较两个字符串的相似度
#比较两个字符串,然后返回两个字符串的相似度
  #相似度以小数的形式返回
  #比较方式为两个字符串中相同的最长的字符长度比上两个字符串中较短的那个字符串的长度
  def self.compare_str(str1,str2)
    i = 0;
    str1_a = str1.downcase.split("") #比较不区分大小写,要区分的话去掉downcase
    str2_a = str2.downcase.split("") #比较不区分大小写,要区分的话去掉downcase
    max_len = 0
    while((i+1) <= str1_a.size)
      x = i
      str1_a[x..str1_a.size].each_with_index do |s, index|
        if str2_a.include?(s)
          j = str2_a.index(s)
          len = 0
          while(str1_a[i] == str2_a[j] && (i+1) <= str1_a.size)
            len += 1
            i += 1
            j += 1
          end
          if len > max_len
            max_len = len
          end
          break
        else
          i += 1
        end
      end
    end
    if str1_a.size > str2_a.size
      unless str2_a.size == 0
        return ((max_len.to_f)/(str2.length)).round(2)
      else
        return 0
      end
    else
      unless str1_a.size == 0
        return ((max_len.to_f)/(str1.length)).round(2)
      else
        return 0
      end
    end
  end

热点排行