You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中将非字母开头字符串的首个字母转为大写?

解决Kotlin中跳过开头非字母数字字符,将首个字母数字转为大写的问题

你目前用的replaceFirstChar()只会处理字符串的第一个字符,没法跳过开头的标点、引号这类非字母数字内容。要实现忽略前置非字母数字,仅把第一个出现的字母数字转为大写,可以通过正则匹配结合替换实现,或者封装成扩展函数方便复用。

方法1:直接用正则replaceFirst

用正则表达式匹配字符串里第一个字母数字字符(\\p{Alnum}匹配Unicode标准下的所有字母和数字,比[a-zA-Z0-9]兼容性更强),再把它替换成大写形式:

fun main(){    
    println("kotlin".replaceFirst("\\p{Alnum}".toRegex()) { it.value.uppercase() })  // Kotlin
    println("¡kotlin!".replaceFirst("\\p{Alnum}".toRegex()) { it.value.uppercase() })  // ¡Kotlin!
    println("¿kotlin?".replaceFirst("\\p{Alnum}".toRegex()) { it.value.uppercase() })  // ¿Kotlin?
    println("\"¿kotlin?\"".replaceFirst("\\p{Alnum}".toRegex()) { it.value.uppercase() })  // "¿Kotlin?"
    println("\"kotlin\"".replaceFirst("\\p{Alnum}".toRegex()) { it.value.uppercase() })  // "Kotlin"
}

输出结果:

Kotlin
¡Kotlin!
¿Kotlin?
"¿Kotlin?"
"Kotlin"

方法2:封装为String扩展函数(推荐)

如果需要多次用这个逻辑,可以封装成String的扩展函数,让代码更简洁易读:

fun String.capitalizeFirstAlnum(): String {
    return this.replaceFirst("\\p{Alnum}".toRegex()) { it.value.uppercase() }
}

fun main(){    
    println("kotlin".capitalizeFirstAlnum())  // Kotlin
    println("¡kotlin!".capitalizeFirstAlnum())  // ¡Kotlin!
    println("¿kotlin?".capitalizeFirstAlnum())  // ¿Kotlin?
    println("\"¿kotlin?\"".capitalizeFirstAlnum())  // "¿Kotlin?"
    println("\"kotlin\"".capitalizeFirstAlnum())  // "Kotlin"
}

关键说明

  • \\p{Alnum}是正则的Unicode字符类,能匹配任意字母(包括中文、日文等非英文字母)或数字,确保多语言场景下的兼容性。
  • replaceFirst只会替换第一个匹配到的字符,刚好符合“找到第一个字母数字并转大写”的需求。

内容的提问来源于stack exchange,提问作者A. Cedano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:33:16