如何在Kotlin的when语句中判断字符串是否以指定内容开头?
Kotlin中when语句判断字符串以特定单词开头的正确写法
你原来的代码存在语法问题,因为带参数的when(message)分支需要是能匹配message的表达式或值,直接写.startsWith("hey")缺少调用主体(即message)。以下是几种正确的实现方式:
方式一:使用无参数when(推荐)
无参数的when允许直接在分支中编写任意布尔条件,适合这种需要判断字符串前缀的场景:
when { message.startsWith("hey") -> { // 当字符串以"hey"开头时执行的逻辑 println("匹配到以hey开头的消息") } message.startsWith("hello") -> { // 匹配其他前缀的逻辑 println("匹配到以hello开头的消息") } else -> { // 未匹配到任何前缀时的默认逻辑 println("未匹配到指定前缀") } }
方式二:处理可空字符串的情况
如果message可能为null,需要先做空值判断,避免空指针异常:
when { message?.startsWith("hey") == true -> { println("非null且以hey开头") } message == null -> { println("消息为null") } else -> { println("消息不以hey开头") } }
方式三:带参数的when结合分支判断
也可以在带参数的when中,先判断类型再处理:
when(message) { is String -> { if (message.startsWith("hey")) { println("以hey开头的字符串") } else { println("字符串但不以hey开头") } } null -> println("消息为null") else -> println("消息不是字符串类型") }
内容的提问来源于stack exchange,提问作者paspielka
相关产品推荐
相关产品推荐

