我有以下几点:
serv match { case "chat" => Chat_Server ! Relay_Message(serv) case _ => null }
字符串问题是,有时我也会在服务器字符串的末尾传递一个额外的参数,所以:
var serv = "chat.message"
型有没有一种方法可以匹配字符串的一部分,以便它仍然被发送到Chat_Server?感谢任何帮助,非常感谢:)
clj7thdc1#
使用正则表达式,确保使用像_*这样的序列,例如:
_*
val Pattern = "(chat.*)".r serv match { case Pattern(_*) => "It's a chat" case _ => "Something else" }
字符串使用正则表达式,你甚至可以轻松地拆分参数和基字符串:
val Pattern = "(chat)(.*)".r serv match { case Pattern(chat, param) => "It's a %s with a %s".format(chat, param) case _ => "Something else" }
型
yrefmtwq2#
让模式匹配绑定到一个变量,并使用 guard 来确保变量以“chat”开头。
// msg is bound with the variable serv serv match { case msg if msg.startsWith("chat") => Chat_Server ! Relay_Message(msg) case _ => null }
字符串
qnzebej03#
如果你想在使用正则表达式时消除任何分组,请确保使用像_*这样的序列号(按照Scala's documentation)。从上面的例子:
nfzehxib4#
从Scala 2.13开始,您可以在比赛中使用s
s
serv match { case s"chat" => ... case s"chat.$msg" => doSomething(msg) ... }
4条答案
按热度按时间clj7thdc1#
使用正则表达式,确保使用像
_*
这样的序列,例如:字符串
使用正则表达式,你甚至可以轻松地拆分参数和基字符串:
型
yrefmtwq2#
让模式匹配绑定到一个变量,并使用 guard 来确保变量以“chat”开头。
字符串
qnzebej03#
如果你想在使用正则表达式时消除任何分组,请确保使用像
_*
这样的序列号(按照Scala's documentation)。从上面的例子:
字符串
nfzehxib4#
从Scala 2.13开始,您可以在比赛中使用
s
字符串