如何打印带有重复名称后跟数字的字符串 - Ruby?

时间:2016-08-05 18:44:51

标签: ruby string

如何打印名称Ex。 John1然后打印出John2,john3,j​​ohn4,john5等无限数字的

我今天开始使用红宝石,我在解决这个问题时遇到了一些麻烦。我搜索了一些但找不到任何东西,所以我该怎么做?

要向某公司的员工大量生产帐户,我发现ruby是最聪明的写入它,我将永远不会再使用它

4 个答案:

答案 0 :(得分:2)

保持简单。

puts (1..5).map { |n| "john#{n}" }
john1
john2
john3
john4
john5

课程Range include是模块Enumerable(课程ArrayHash和其他课程)。通过这样做,Range的实例(例如1..5)可以使用所有Enumerable的实例方法。这里使用了Enumerable个实例方法之一:Enumerable#map

答案 1 :(得分:1)

打印这样一个简单的系列:

n = 1
loop do
  print 'john%d, ' % n
  n += 1
end

永远不会终止,这有点愚蠢。也许你想要的是一个有限的范围:

list = (1..10).map do |n|
   'john%d' % n
end.join(', ')

puts list

您可以根据需要调整开始值和结束值。

答案 2 :(得分:1)

也许在这里使用一个枚举器:

enum = Enumerator.new do |y|
  i = 1
  loop do
   y << "John#{i}"
   i += 1
  end
end

enum.next #=> "John1"
enum.next #=> "John2"
enum.next #=> "John3"

然后使用Enumerator实例可用的任何一种方法。在这里,我们使用Enumerator#next来获得下一个&#34; John&#34;字符串。

答案 3 :(得分:0)

一种简单的方法是使用for循环。首先声明一个空字符串变量,它将保存我们的内容。

要考虑的一个重要事项是循环的索引。如果它是最后一项,我们不希望添加", "

之类的分隔符

这是条件发挥作用的地方。如果索引小于最后一个,我们将添加一个逗号和空格,否则只添加名称。

通过将变量包装在#{}

中来完成插值
str = ""

for i in 1..5
  str += i < 5 ? "john#{i}, " : "john#{i}"
end

返回

"john1, john2, john3, john4, john5"