我正在使用replaceFirstChar()
并将uppercase()
字符串的第一个字符转换为大写。
但有些字符串的第一个字符可能是标点符号、引号等。在这种情况下,我希望它忽略它们,并替换它找到的第一个字母数字字符。
我怎样才能实现这个目标?
代码
fun main(){
println("kotlin".replaceFirstChar { it.uppercase() }) // Kotlin
println("¡kotlin!".replaceFirstChar { it.uppercase() }) // I need ¡Kotlin!
println("¿kotlin?".replaceFirstChar { it.uppercase() }) // I need ¿Kotlin?
println("\"¿kotlin?\"".replaceFirstChar { it.uppercase() }) // I need "¿Kotlin?"
println("\"kotlin\"".replaceFirstChar { it.uppercase() }) // I need "Kotlin"
}
输出
Kotlin
¡kotlin!
¿kotlin?
"¿kotlin?"
"kotlin"
期望输出
Kotlin
¡Kotlin!
¿Kotlin?
"¿Kotlin?"
"Kotlin"
您可以根据自己的情况使用以下方法(和逻辑):
使用isLetter方法对字符串输入使用indexOfFirst
仅将indexOfFirst返回的字符大写
它看起来有点像这样:
显然,如果字符串本身可能没有任何字母,则您需要在使用 indexOfFirst 后添加一个 if 保护来查看它是否等于 -1。
您可以利用正则表达式来精确定位您所需的字母,如下所示: