确保Ruby中字符串长度的正确方法是什么?该字符串是多字节(UTF8)。输入的字符串可能太短,完全正确或太长。它需要分别填充,没有任何东西和切片。
我可以通过两个步骤实现目标:
def ensure_length(str, length)
str.ljust(length).slice(0, length)
end
这有一种方法吗?如果它需要分两个步骤,那么最好的顺序是:ljust然后切片,反之亦然,为什么?
答案 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