Kotlin并使用padEnd()两次

时间:2018-07-03 02:10:25

标签: string kotlin jetbrains-ide

我尝试在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()

这是预期的功能吗?如果是这样,为什么会这样?还是只是一个错误?

2 个答案:

答案 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。