Mon projet lit de nombreux fichiers (ces fichiers ont un titre et des sections) et devrait trouver le titre des fichiers qui contiennent un acronyme. Ceci est ma classe docs:Comment trouver un acronyme dans un texte?
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
Et cette mes sections classe:
class Section
def initialize()
@title = ""
@text = ""
end
def tiene_acronimo(acr)
return title.include?(acr) || text.include?(acr)
end
end
Et cette ma méthode:
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
La méthode devient un acronyme et devrait trouver tous les documents qui contiennent il. La méthode inclue?
[sic] gère l'upcase et renvoie true
si les documents contiennent une sous-chaîne comme l'acronyme. Par exemple:
Multiple sclerosis (**MS**), also known as # => `true`
Presenting signs and sympto**ms** # => `false` (but `include?` returns `true`)
Comment trouver plus facilement un acronyme?
Merci! Je suis nouveau à ruby, ce code fonctionne quand j'ai déclaré la var acr = "MS", mais quand je demande la valeur sur l'écran ("acr = gets" et je mets MS) ne fonctionne pas. C'est bizarre parce que j'entre la même valeur ... c'est comme si ce sont des formats différents ... merci :) –
Lorsque vous utilisez get, un caractère de nouvelle ligne est ajouté à la fin de l'entrée. Vous pouvez changer la ligne 'regex_to_match = /\b#{Regexp.escape(acr)} \ b /' à 'regex_to_match = /\b#{Regexp.escape(acr.strip)} \ b /' pour se débarrasser de la nouvelle ligne caractère et juste vérifier contre le texte entré. –