
Kotlin 1.8.0 起,toUpperCase() 和 toLowerCase() 已被弃用,推荐使用更安全、更符合国际化规范的 uppercase() 和 lowercase() 方法,并支持显式指定 Locale。
kotlin 1.8.0 起,`touppercase()` 和 `tolowercase()` 已被弃用,推荐使用更安全、更符合国际化规范的 `uppercase()` 和 `lowercase()` 方法,并支持显式指定 `locale`。
自 Kotlin 1.8.0 版本起(包括您使用的 1.8.22),标准库对字符串大小写转换 API 进行了重构:原有的 String.toUpperCase() 和 String.toLowerCase() 方法被正式标记为 deprecated,取而代之的是更语义清晰、locale-aware(区域设置感知)的新方法 —— uppercase() 和 lowercase()。
✅ 正确用法(推荐):
fun main() {
val txt = "Hello, World!"
println(txt.uppercase()) // 输出: HELLO, WORLD!
println(txt.lowercase()) // 输出: hello, world!
}? 关键改进点:
-
更明确的命名:
uppercase()/lowercase()比toUpperCase()/toLowerCase()更符合 Kotlin 的命名惯例(无冗余动词前缀); -
默认 locale 安全性:新方法默认使用
Locale.getDefault(),避免隐式依赖 JVM 默认 locale 导致的跨平台不一致问题; -
显式 locale 支持(可选):如需特定语言规则(例如土耳其语中
'i'的大写为'İ'),可传入Locale参数:println("istanbul".uppercase(Locale.forLanguageTag("tr"))) // ISTANBUL → "İSTANBUL"(注意带点的 İ)
⚠️ 注意事项:
- 若仍调用
toUpperCase()/toLowerCase(),编译器仅发出 warning(非 error),代码仍可运行,但不建议在新项目中使用; -
Char类型也同步更新:'a'.uppercaseChar()/'A'.lowercaseChar()替代旧版toUpper()/toLower(); - 使用
kotlinc编译时,确保 JDK 版本 ≥ 11(Kotlin 1.8+ 最低要求),并确认未意外引入旧版 Kotlin 标准库。
? 补充:若需兼容旧版本或做迁移适配,可添加 @Suppress("DEPRECATION")(仅限临时过渡),但应尽快迁移到新 API。
总之,只需将 .toUpperCase() 替换为 .uppercase()、.toLowerCase() 替换为 .lowercase(),即可无缝升级,获得更健壮、更可维护的字符串处理能力。

















