我能不能把下面两个案例合并成一个case
子句,因为它们都做同样的事情?
e match {
case "hello" => e + "world"
case "hi" => e + "world
}
此外,如果我想使用startsFor
匹配,
e match { case e.startsWith("he") | e.startsWith("hi") => ... }
是的,您可以简单地使用或(|)
来匹配
模式之一,
scala> "hi" match { case "hello" | "hi" => println("fantastic") case _ => println("very very bad")}
fantastic
scala> "hello" match { case "hello" | "hi" => println("fantastic") case _ => println("very very bad")}
fantastic
scala> "something else" match { case "hello" | "hi" => println("fantastic") case _ => println("very very bad")}
very very bad
你也可以使用正则表达式进行模式匹配,当有很多标准需要匹配时尤其有用,
scala> val startsWithHiOrHello = """hello.*|hi.*""".r
startsWithHiOrHello: scala.util.matching.Regex = hello.*|hi.*
scala> "hi there" match { case startsWithHiOrHello() => println("fantastic") case _ => println("very very bad")}
fantastic
scala> "hello there" match { case startsWithHiOrHello() => println("fantastic") case _ => println("very very bad")}
fantastic
scala> "non of hi or hello there" match { case startsWithHiOrHello() => println("fantastic") case _ => println("very very bad")}
very very bad
直接参考正则表达式上的Scala多类型模式匹配和Scala匹配大小写
反正有这样做的吗?
我研究了一段时间,还没有找到匹配以下模式的线索(不过,我对regex也很陌生),它看起来像 或 所以我想将上面的字符串匹配并捕获为/abc/foo/bar。现在,“/stop”是一个可选字符串,可以附加在模式的末尾。目标是获得所需的捕获,同时忽略“stop”(如果“stop”存在多次,则在第一个“stop”处停止),同时允许在中间设置尽可能多的斜线(行尾的斜线除外)。 但它与以下任何项都不匹配:
问题内容: 我如何在scala switch语句中执行一个case块后开始执行另一个case块的语句。(在Java中:不间断的情况)。 感谢帮助! 问题答案: 如果无法使用,可以使用一系列操作来解决,例如:
问题内容: 情况如下: 我有一个已作为字符串抓取的网页。 我在MSSQL数据库中有几个字段。例如,汽车模型具有ID和名称,例如Mustang或Civic。它预装了大多数型号的汽车。 我想在我的模型表中找到任何匹配的行。因此,如果我的模型表中有Civic,Mustang和E350,我想在我抓取的页面上找到这三个中任何一个的出现情况。 在C#中执行此操作的有效方法是什么。我正在使用LINQ to SQ
我对各种case类实现有一个封闭的特性。我想为同一个匹配表达式同时对多个类进行模式匹配。我似乎不能不分解case类和它们之间的“|” 目前看起来像: 代码中的另一个位置: