【发布时间】:2021-10-24 20:22:13
【问题描述】:
我正在用 Ruby 解决一个练习题。我已经有了答案(如下),但我不确定我是否理解答案的一部分究竟是如何工作的,具体来说,如果|word| 在数组中,new_word 如何评估为字符串。我可能只是在这里忽略了一些超级基本的东西,但如果有任何帮助,我将不胜感激。谢谢!
提示:
编写一个方法abbreviate_sentence,它接受一个句子字符串并返回一个新句子,其中每个超过4个字符的单词都删除了所有元音。
答案:
words = sent.split(" ")
new_words = []
words.each do |word|
if word.length > 4
new_word = abbreviate_word(word)
new_words << new_word
else
new_words << word
end
end
return new_words.join(" ")
end
def abbreviate_word(word)
vowels = "aeiou"
new_word = ""
word.each_char do |char|
if !vowels.include?(char)
new_word += char
end
end
return new_word
end
puts abbreviate_sentence("follow the yellow brick road") # => "fllw the yllw brck road"
puts abbreviate_sentence("what a wonderful life") # => "what a wndrfl life" ```
【问题讨论】:
-
欢迎来到 SO!您正在遍历一个字符串数组,因此每个
|word|不是一个数组,而是一个字符串。此代码可能是sent.split(" ").map {|e| e.size > 4 ? e.gsub(/[aeiou]/, "") : e}.join(" ") -
@ggorlen
e.gsub(/[aeiou]/, "")==e.delete("aeiou") -
@steenslag 很好,谢谢。我确信还有其他方法可以缩短/改进它。
-
谢谢你们!
-
如果您打算回答自己的问题,请将其发布为答案并将其标记为已接受。这让其他 SO 用户知道该问题已得到解答,并帮助任何有类似问题的人找到答案。
标签: arrays ruby string algorithm