我如何在文本中找到首字母缩略词?

时间:2015-12-06 23:00:12

标签: ruby string include acronym

我的项目读取了很多文件(这些文件有标题文本和部分),应该找到包含首字母缩略词的文件的标题。这是我的文档课程:

class Doc
  def initialize(id, secciones)
    @id, @secciones = id, secciones
  end
  def to_s
    result = "" + @id.to_s + "\n" + @secciones.to_s
    return result
  end
  def tiene_acronimo(acr)
    puts "a ver si tiene acronimos el docu.."
    tiene_acronimo = false
    secciones.each do |seccion|
      if seccion.tiene_acronimo(acr)
        tiene_acronimo = true
      end
    end
    return tiene_acronimo
  end
  attr_accessor :id
  attr_accessor :secciones
end

这是我的部分课程:

class Section
  def initialize ()
    @title = ""
    @text = ""   
  end
  def tiene_acronimo(acr)
    return title.include?(acr) || text.include?(acr)
  end
end

这是我的方法:

def test()
  results = Array.new
  puts "Dame el acronimo"
  acr = gets
  documentos_cientificos.each do |d|
  if d.tiene_acronimo(acr)
    results << d
  end  
end

该方法获得首字母缩略词,并且应该找到包含它的所有文档。如果文档包含任何子字符串(如首字母缩略词),方法inclue? [sic]会加入upcase并返回true。例如:

Multiple sclerosis (**MS**), also known as # => `true`
Presenting signs and sympto**ms** # => `false` (but `include?` returns `true`)

我如何更容易找到首字母缩略词?

1 个答案:

答案 0 :(得分:1)

您可以使用匹配函数的一些正则表达式。如果内容包含提供的FULL单词,则以下正则表达式将找到匹配项。它将忽略子串,它将区分大小写。

title.match(/\b#{Regexp.escape(acr)}\b/).to_a.size > 0 # => true
text.match(/\b#{Regexp.escape(acr)}\b/).to_a.size > 0 # => false

或等效

def tiene_acronimo(acr)
  regex_to_match = /\b#{Regexp.escape(acr)}\b/
  has_acr = false
  if (title.match(regex_to_match)) || (text.match(regex_to_match))
    has_acr = true
  end

  return has_acr
end

...所以你可以将你的功能重新定义为:

myApp/api/models/pet.js