web-dev-qa-db-ja.com

Scala-部分文字列の大文字と小文字の区別

私は次のものを持っています:

serv match {

    case "chat" => Chat_Server ! Relay_Message(serv)
    case _ => null

}

問題は、serv文字列の最後に追加のパラメータを渡すこともあるためです:

var serv = "chat.message"

文字列の一部を照合してChat_Serverに送信する方法はありますか?

助けてくれてありがとう、非常に感謝します:)

35
jhdevuk

正規表現を使用してください;)

val Pattern = "(chat.*)".r

serv match {
     case Pattern(chat) => "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"
}
49
om-nom-nom

パターンマッチングを変数にバインドし、guardを使用して、変数が「chat」で始まるようにします

// msg is bound with the variable serv
serv match {
  case msg if msg.startsWith("chat") => Chat_Server ! Relay_Message(msg)
  case _ => null
}
50
Kyle

正規表現を使用しているときにグループ化を解除する場合は、必ず__*_( Scalaのドキュメント のような)のようなワイルドカードを使用してください。

上記の例から:

_val Pattern = "(chat.*)".r

serv match {
     case Pattern(_*) => "It's a chat"
     case _ => "Something else"
}
_
0
jverce