不区分大小写的时候

时间:2018-04-17 12:02:45

标签: kotlin

默认情况下是否可以使when String比较大小写不敏感?

when (subtype.toLowerCase()) {
    MessagingClient.RTC_SUBTYPE.sdp.toString().toLowerCase() -> onSDPMessageReceived(topic, sender, data!!)
    MessagingClient.RTC_SUBTYPE.bye.toString().toLowerCase() -> onRTCBYEMessageReceived(topic, sender)
    MessagingClient.RTC_SUBTYPE.negotiationOffer.toString().toLowerCase() -> onNegotiationOfferMessageReceived(sender, data!!)
}

这有太多的重复代码!另请注意,MessagingClient.RTC_SUBTYPEenum class,第一行的subtype是从某个客户端收到的,因此我们必须相应地对待它。

2 个答案:

答案 0 :(得分:6)

我会将subtype转换为MessagingClient.RTC_SUBTYPE,如下所示:

val subtypeEnum = MessagingClient.RTC_SUBTYPE.values().firstOrNull {
   it.name.equals(subtype, ignoreCase = true) 
} ?: throw IllegalArgumentException("${subtype} no value of MessagingClient.RTC_SUBTYPE match")

然后在when

中使用它
when (subtypeEnm) {
    MessagingClient.RTC_SUBTYPE.sdp -> onSDPMessageReceived(topic, sender, data!!)
    MessagingClient.RTC_SUBTYPE.bye -> onRTCBYEMessageReceived(topic, sender)
    MessagingClient.RTC_SUBTYPE.negotiationOffer -> onNegotiationOfferMessageReceived(sender, data!!)
}

答案 1 :(得分:-1)

var s1 =editText.text.toString()
var s2=textView_.text
var s3 =s1.equals(s2 ,true)