Ruby块`方法中的块';:未定义的方法`注入';对于true:TrueClass(NoMethodError)
我有一个方法,它接收一个字符串并返回一个新的句子字符串,其中每个超过4个字符的单词都会删除所有元音。输出应将修改后的句子字符串返回到这些规范Ruby块`方法中的块';:未定义的方法`注入';对于true:TrueClass(NoMethodError),ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有一个方法,它接收一个字符串并返回一个新的句子字符串,其中每个超过4个字符的单词都会删除所有元音。输出应将修改后的句子字符串返回到这些规范 def abbreviate_sentence(sent) arr = [] word = sent.split("") word.reject do |v| if word.length > 4 arr << %w(a e i o u).any?.inject(v) else a
def abbreviate_sentence(sent)
arr = []
word = sent.split("")
word.reject do |v|
if word.length > 4
arr << %w(a e i o u).any?.inject(v)
else arr << word
end
end
return arr
end
def缩写句子(已发送)
arr=[]
word=sent.split(“”)
拒绝做某事|
如果word.length>4
arr之所以会出现此错误,是因为您试图对结果为true
或false
的方法进行调用
还有一些小事情需要注意:
- 调用
str.split(“”)
将返回所有字符而不是单词的数组
- 要从修改后的单词数组中形成结果字符串,可以使用
就我个人而言,我将通过以下方式解决此任务:
def缩写句子(句子)
words=句子.split#默认情况下,此方法按空格分隔
handled_words=words.map do|w|
如果w.length>4
w、 tr!!('aeiou','')#此方法从word中挖掘所有级别
结束
处理过的单词
结束
已处理的单词。join(“”)#Ruby自动返回最后计算的表达式
结束
使用irb
的一些结果:
缩写一句“你好!克诺比将军“#=>“好的,好的,好的”
缩写句子“示例文本”#=>“smpl文本”
我要指出一点:
此方法不保留空格,因为使用了
缩写句子“示例\n带有一些\t\t\t新字符串\n和\t表格”#=>“带有一些新字符串和TBLTN的Exmpl”