我是编程和自学的新手我正在尝试编写一个带字符串并将字符串中的每个单词大写的程序。但是,要排除某些单词,例如“and,of,a”。目的是修复一个损坏的字符串并返回一个像字符串一样的标题。
这是我到目前为止所拥有的。
class Title
attr_accessor :string, :fix
def initialize(string)
@string = string
end
def fix
str = []
final = []
string.downcase
string[0].capitalize
str = string.split
str.each_with_index do |s, x|
if s == "and"
final << s
elsif s == "of"
final << s
elsif s == "a"
final << s
elsif s == "the" && x != 0
final << s
else
final << s.capitalize
end
end
string = final.join(' ')
return string
end
end
我收到的错误是我正在利用每个单词,程序忽略了我想要的异常。
答案 0 :(得分:0)
你看起来像这样
class Title
attr_accessor :string
def initialize(string)
@string = string
end
def fix
filtered_string = string.split.select{ |a| !["and", "of", "the", "a"].include? a }
title = filtered_string.map{ |a| a.capitalize }.join(" ")
end
end
首先,您过滤掉排除的单词,然后将大写单词加入标题。
您不需要attr_accessor :fix
,因为修复被定义为公共方法。
答案 1 :(得分:0)
这样的东西?
class Titlizer
BLACK_LIST = %w(and of the a)
def initialize(sentence)
@sentence = sentence
end
def title
capitalized.join(" ").capitalize
end
private
def capitalized
words.map do |word|
if should_capitalize?(word)
word.capitalize
else
word
end
end
end
def words
@sentence.split
end
def should_capitalize?(word)
!BLACK_LIST.include?(word)
end
end