在this问题中,提问者请求一个每隔x个字符插入一个空格的解决方案。答案都涉及使用正则表达式。如果没有正则表达式,你怎么能实现这个目标呢?
这是我想出来的,但它有点满口。更简洁的解决方案?
string = "12345678123456781234567812345678"
new_string = string.each_char.map.with_index {|c,i| if (i+1) % 8 == 0; "#{c} "; else c; end}.join.strip
=> "12345678 12345678 12345678 12345678"
答案 0 :(得分:3)
class String
def in_groups_of(n)
chars.each_slice(n).map(&:join).join(' ')
end
end
'12345678123456781234567812345678'.in_groups_of(8)
# => '12345678 12345678 12345678 12345678'
答案 1 :(得分:0)
class Array
# This method is from
# The Poignant Guide to Ruby:
def /(n)
r = []
each_with_index do |x, i|
r << [] if i % n == 0
r.last << x
end
r
end
end
s = '1234567890'
n = 3
join_str = ' '
(s.split('') / n).map {|x| x.join('') }.join(join_str)
#=> "123 456 789 0"
答案 2 :(得分:-1)
这稍短但需要两行:
new_string = ""
s.split(//).each_slice(8) { |a| new_string += a.join + " " }