在 Kotlin 中屏蔽除第一个字符之外的所有字符

jjr*_*jrz 1 kotlin

恐怕我的解决方案不是很有效:

fun String.mask() = if (isEmpty()) {
    this
} else {
    this[0] + String((1 until length).map { '*' }.toCharArray())
}
Run Code Online (Sandbox Code Playgroud)

你会怎么做?

Swe*_*per 5

一种方法是使用replaceRange进行替换,并repeat构造重复的星号:

fun String.mask() =
    if (isEmpty())
        ""
    else
        replaceRange(1, length, "*".repeat(length - 1))
Run Code Online (Sandbox Code Playgroud)