【问题标题】:Ruby - Understanding string vs array comparisonRuby - 理解字符串与数组的比较
【发布时间】: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 &gt; 4 ? e.gsub(/[aeiou]/, "") : e}.join(" ")
  • @ggorlen e.gsub(/[aeiou]/, "") == e.delete("aeiou")
  • @steenslag 很好,谢谢。我确信还有其他方法可以缩短/改进它。
  • 谢谢你们!
  • 如果您打算回答自己的问题,请将其发布为答案并将其标记为已接受。这让其他 SO 用户知道该问题已得到解答,并帮助任何有类似问题的人找到答案。

标签: arrays ruby string algorithm


【解决方案1】:

感谢@ggorlen:

你正在迭代一个字符串数组,所以每个 |word|不是数组,是字符串。此代码可以发送。split(" ").map {|e| e.size > 4 ? e.gsub(/[aeiou]/, "") : e}.join(" ")

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 2011-08-02
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多