Ruby 使用分隔符(最后一个元素除外)连接数组元素

Ruby 使用分隔符(最后一个元素除外)连接数组元素,ruby,arrays,Ruby,Arrays,如何将数组元素(手动,不使用或类似方法)与分隔符连接起来,而不在最后一个元素后打印分隔符 示例: names = %w[Benny Punky Jess] for n in names # apply logic end # OUTPUT => "Benny_Punky_Jess" 这是为了学习,与家庭作业无关。首选非语言特定的答案,因为我希望能够在其他地方也应用此逻辑。伪代码: output = ""; DELIMITER = ","; for (i = 0; i < a

如何将数组元素(手动,不使用或类似方法)与分隔符连接起来,而不在最后一个元素后打印分隔符

示例:

names = %w[Benny Punky Jess]

for n in names
  # apply logic
end

# OUTPUT => "Benny_Punky_Jess"
这是为了学习,与家庭作业无关。首选非语言特定的答案,因为我希望能够在其他地方也应用此逻辑。

伪代码:

output = "";
DELIMITER = ",";
for (i = 0; i < array.length-1; i++) {
 output += array[i] + DELIMITER; 
}
output += array[array.length-1];
output=”“;
分隔符=“,”;
对于(i=0;i
在ruby中,您可以使用
。每个\u都带有\u索引
,并检查索引是否与数组长度相对应,然后不附加分隔符。

以下操作即可

names = %w[Benny Punky Jess]
output = ""
for n in names
   output = output + n
   output = output + '_' unless (n.eql? names[-1])
end
puts output
name=%w[Benny Punky Jess]
输出=“”
名字中的n
如果output.blank?
输出=n
其他的
输出+='\
names=%w[Benny Punky Jess]
output=“”
names.each{n |!(n.eql?names[-1])?输出

关键是在没有参数的情况下使用(
inject
),因此
str
最初是
'Benny'
,传递到块的
名称的第一个元素是三个答案中的
'Punky'
这是我最喜欢的。-1当
join
完全符合你的要求时,你为什么不想使用它呢?如果你真的阅读了这个问题,你会发现它是为了学习。我对过程感兴趣,而不是最终结果。如果你发现任何答案都有帮助,请选择最有帮助的答案。Krystah,我已经修改了我的答案回答。
names = %w[Benny Punky Jess]
output = ''
for n in names
  if output.blank?
    output = n
  else
    output += '_' << n
  end
end
p output
names = %w[Benny Punky Jess]
output = ""
names.each { |n| !(n.eql? names[-1]) ? output << n << '_' : output << n }
puts output
 ["Benny", "Punky", "Jess"].reduce { |str,s| str + '_' + s }
  #=> "Benny_Punky_Jess"