在字符串中重复字符

时间:2013-02-21 00:50:57

标签: ruby string

我知道这是一个简单的问题,但由于某些原因它不会点击。我想在字符串中重复固定数量的字符。例如:

str = 'abcde'
temp = ''
x = 8
for i in 0..x
    if str[i].nil?
        temp << ''
    else
        temp << str[i]
    end
end

除非我没有输入。我需要的是:

  

abcdeabc

请,任何帮助将不胜感激。如果有一个更好的工作方式来做这个而不是我不工作的天真的方法,我想知道

5 个答案:

答案 0 :(得分:4)

使用ljust应该这样做:

str = 'abcde'

str.ljust(8, str)
# => "abcdeabc" 

str.ljust(12, str)
# => "abcdeabcdeab" 

答案 1 :(得分:3)

如果您想重复几次字符串,请使用*。我们可以将它与切片结合起来得到这个解决方案:

def repfill(str, n)
    nrep = (Float(n) / str.length).ceil
    return (str * nrep)[0...n]
end

示例:

irb(main):030:0> repfill('abcde', 8)
=> "abcdeabc"

至于你的解决方案,你缺少的是 modulo 从头开始重复字符串:

str = 'abcde'
temp = ''
x = 8
for i in 0...x # note ... to exclude last element of range
    temp << str[i % str.length]
end

答案 2 :(得分:1)

您可以使用slicing

轻松完成此操作
def repeat_x_chars(str, x)
  # special cases
  return str if x == 0
  return ""  if str.length == 0

  return str + str[0..(str.length % x)] # slicing
end

答案 3 :(得分:0)

试试这个单行:

res = (str * (x / str.length)) + str[0...(x%str.length)]

答案 4 :(得分:0)

模拟str_repeat

"abcde" * 3   
#-> "abcdeabcdeabcde"