Scala - случайная совпадение частичной строки
У меня есть следующее:
var serv = "chat"
serv match {
case "chat" => Chat_Server ! Relay_Message(serv)
case _ => null
}
Проблема в том, что иногда я также передаю дополнительный параметр в конце строки serv, поэтому:
var serv = "chat.message"
Есть ли способ, которым я могу сопоставить часть строки, чтобы она по-прежнему отправлялась в Chat_Server?
Спасибо за любую помощь, очень ценю:)
Ответы
Ответ 1
Использовать регулярные выражения;)
val Pattern = "(chat.*)".r
serv match {
case Pattern(chat) => "It a chat"
case _ => "Something else"
}
И с регулярными выражениями вы можете легко разделить параметр и базовую строку:
val Pattern = "(chat)(.*)".r
serv match {
case Pattern(chat,param) => "It a %s with a %s".format(chat,param)
case _ => "Something else"
}
Ответ 2
Попросите привязку шаблона привязать к переменной и использовать защитник, чтобы гарантировать, что переменная начинается с "chat"
// msg is bound with the variable serv
serv match {
case msg if msg.startsWith("chat") => Chat_Server ! Relay_Message(msg)
case _ => null
}