如何确保Ruby中的字符串长度

时间:2017-03-29 12:40:24

标签: ruby

确保Ruby中字符串长度的正确方法是什么?该字符串是多字节(UTF8)。输入的字符串可能太短,完全正确或太长。它需要分别填充,没有任何东西和切片。

我可以通过两个步骤实现目标:

def ensure_length(str, length)
  str.ljust(length).slice(0, length)
end 

这有一种方法吗?如果它需要分两个步骤,那么最好的顺序是:ljust然后切片,反之亦然,为什么?

2 个答案:

答案 0 :(得分:5)

 p "%-10.10s" % "abcdabcdabcd"

其中第一个-10将字符串填充为10,如ljust,第二个10是最大字符数。记录在sprintf下。

答案 1 :(得分:2)

并不比你的版本更好,只是另一种选择:

'foo'[0...5].ljust(5)
#=> "foo  "
'foobar'[0...5].ljust(5)
#=> "fooba"

或作为一种方法:

def ensure_length(str, length)
  str[0...length].ljust(length)
end