Check if a string is blank or doesn't exist in Scala

前端 未结 9 1153
误落风尘
误落风尘 2021-02-01 16:29

I have an Option[String].

I want to check if there is a string exists and if it\'s exists its not blank.

def isBlank( input : Option[Strin         


        
9条回答
  •  独厮守ぢ
    2021-02-01 17:02

    exists (Accepted solution) will work when input has at least one element in it, that is Some("") but not when it's None.

    exists checks if at least one element(x) applies to function.

    eg.

    scala> List[String]("apple", "").exists(_.isEmpty)
    res21: Boolean = true
    
    //if theres no element then obviously returns false
    scala> List[String]().exists(_.isEmpty)
    res30: Boolean = false
    

    Same happens with Option.empty, as theres no element in it,

    scala> Option.empty[String].exists(_.isEmpty)
    res33: Boolean = false
    

    So forall is what makes sure the the function applies all the elements.

    scala> def isEmpty(sOpt: Option[String]) = sOpt.forall(_.trim.isEmpty)
    isEmpty: (sOpt: Option[String])Boolean
    
    scala> isEmpty(Some(""))
    res10: Boolean = true
    
    scala> isEmpty(Some("non-empty"))
    res11: Boolean = false
    
    scala> isEmpty(Option(null))
    res12: Boolean = true
    

    The gross way is to filter nonEmpty string, then check option.isEmpty.

    scala> def isEmpty(sOpt: Option[String]) = sOpt.filter(_.trim.nonEmpty).isEmpty
    isEmpty: (sOpt: Option[String])Boolean
    
    scala> isEmpty(None)
    res20: Boolean = true
    
    scala> isEmpty(Some(""))
    res21: Boolean = true
    

提交回复
热议问题