我尝试在String
上两次使用padEnd()
。第一次padEnd()
扩展功能可以正常工作,但是第二次,它没有添加我尝试过的任何字符。
我的代码:
var s = "Hi -> "
s = s.padEnd(10, 'O')
s = s.padEnd(5, ' ')
println(s)
我的输出:
Hi -> OOOO
我正在使用Kotlin 1.2.50版。我还尝试了Jetbrains' online compiler来防止该错误仅出现在我的计算机上,并且结果相同。我还尝试使用其他版本的kotlin(1.0.7和1.1.60),但仍具有相同的功能/错误。
我也尝试使用具有相同行为的padStart()
,只是将其添加到String
的前面。
混合这两个扩展功能也无法按预期工作:使用padStart()
,然后紧接着padEnd()
这是预期的功能吗?如果是这样,为什么会这样?还是只是一个错误?
答案 0 :(得分:3)
padEnd
不会以给定的次数将给定的字符添加到您的String中-第一个参数是它将填充的目标长度。从文档中:
返回一个长度至少为
length
的char序列,此序列由附加此长度的padChar
组成,该长度为达到该长度所必需的次数。
因此,在您的第二个通话中,您尝试填充"Hi -> 0000"
,直到其至少5个字符长为止(它已经是字符,所以在其末尾没有空格添加。)
答案 1 :(得分:0)
您还可以执行以下操作:
val outerChar = "*"
val x = outerChar.padEnd(10)
.plus("hello")
.plus(outerChar.padStart(10))
println(x)
// Prints:
// * hello *
这将在*和hello之间每边放置10个空格。还可以尝试将呼叫交换到padEnd和padStart。