ruby数组批量大小字符限制

时间:2016-12-30 11:48:41

标签: arrays ruby

我正在尝试从复制的代码调试问题,现在已经搜索了三天,但无法按预期运行。

我需要迭代一个数组但坚持一个字符限制。所以我把他们分组。问题是,下面的代码有时会重复值。

我是ruby的新手并且正在重复使用code。所以必须要学到很多东西。

生成的数组是:

[" abc def ghi", "klm klm nop qrs", "tuv tuv wxy z"]

应该是:

[" abc def ghi", "klm nop qrs", "tuv wxy z"]
module TextFetcher
  def self.fetch_text_from()

  node_texts = ["abc", "def", "ghi", "klm", "nop", "qrs", "tuv", "wxy", "z"]
  combined_texts = []
  tmp_string = ""

  node_texts.each do |text|
    #puts text.size

  if tmp_string.size + text.size > 14
    combined_texts << tmp_string
    tmp_string = text
  end
  tmp_string << " #{text}"
  end
  #puts text
  combined_texts << tmp_string
  p combined_texts
  end
end

input_texts = TextFetcher.fetch_text_from()

input_texts.each.with_index do |text, i|

    #puts "\n"
    #puts text

end

2 个答案:

答案 0 :(得分:0)

NB 我正在回答所说的确切问题。

  

需要删除生成的重复条目。

input = [" abc def ghi", "klm klm nop qrs", "tuv tuv wxy z"]
input.map { |e| e.split(' ').reject(&:empty?).uniq.join(' ') }
#⇒ [
#  [0] "abc def ghi",
#  [1] "klm nop qrs",
#  [2] "tuv wxy z"
# ]

答案 1 :(得分:0)

删除行tmp_string = text并将其替换为tmp_string = ""将停止添加重复项。

修改:如果您希望从每个字符串的开头删除空格,请将node_texts.each do |text|块中的代码替换为:

#puts text.size
if tmp_string.size + text.size > 14
  combined_texts << tmp_string
  tmp_string = text
else
  tmp_string << " #{text}"
end