我正在尝试从复制的代码调试问题,现在已经搜索了三天,但无法按预期运行。
我需要迭代一个数组但坚持一个字符限制。所以我把他们分组。问题是,下面的代码有时会重复值。
我是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
答案 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