我的项目读取了很多文件(这些文件有标题文本和部分),应该找到包含首字母缩略词的文件的标题。这是我的文档课程:
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`)
我如何更容易找到首字母缩略词?
答案 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