2017-10-23 2 views
-1

ich drei Buchstaben zuerst abrufen müssenNehmen ersten drei Buchstaben im String

val s ="abc" 
val t = s.substring(0,2).equals("ab") 
case class Test(id :String) 

if(t){ 
    Test("found") 
}else{ 
    None 
} 

Gibt es eine effiziente Möglichkeit für die obige Logik

Antwort

3
"abc".take(2) match { 
    case "ab" => Test("found") 
    case _ => None 
} 

für String, können Sie verwenden, um Code take zu Holen Sie sich Zeichen wie Seq, und es ist sicherer als substring zu vermeiden StringIndexOutOfBoundsException Ausnahme.

und da Sie None zurückgeben, wenn nicht übereinstimmen, Test("found") Sollte nicht Some(Test("found")) sein?

0

One-Liner:

case class Test(id: String) 
val s = "abc" 

if (s.take(2) == "ab") Test("found") else None 

Stellen Sie sicher, Ihre Zeichenfolge mindestens 2 Zeichen lang ist oder take wird eine Ausnahme werfen.

Verwandte Themen