Ruby - 简化字符串的乘法连接

10

s是一个字符串,这个看起来很啰嗦 - 我该如何简化它?

   if x === 2
      z = s
    elsif x === 3
      z = s+s
    elsif x === 4
      z = s+s+s
    elsif x === 5
      z = s+s+s+s
    elsif x === 6
      z = s+s+s+s+s

谢谢


1
可能会有拼写错误,但是“===”必须改为“==”。 - Salil
3
@Salil:使用 === 没有问题。但在这里使用 === 确实相当不寻常,可能表明了对 === 的理解存在误解。 - sepp2k
4个回答

25

像这样是最简单的,并且有效(在ideone.com上看到):

puts 'Hello' * 3   # HelloHelloHello
 
s = 'Go'
x = 4
z = s * (x - 1)
puts z             # GoGoGo

API 链接

ruby-doc.org - String: str * integer => new_str

复制 - 返回一个包含接收器 integer 个副本的新字符串。

"Ho! " * 3   #=> "Ho! Ho! Ho! "

1
ideone.com一直在我生命中哪里+1 - Dr. Frankenstein

2
z=''
(x-1).times do
 z+=s
end

1
例如,对于一个最高评分为5星的评分系统,您可以使用以下内容:
def rating_to_star(rating)
   'star' * rating.to_i + 'empty_star' * (5 - rating.to_i)
end

1

伪代码(非Ruby语言)

if 1 < int(x) < 7  then
   z = (x-1)*s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接