Sou*_*nta 25 string scala option
我有一个Option[String]
.
我想检查是否存在字符串,如果存在则不是空白.
def isBlank( input : Option[String]) : Boolean =
{
input.isEmpty ||
input.filter(_.trim.length > 0).isEmpty
}
Run Code Online (Sandbox Code Playgroud)
在Scala中有更好的方法吗?
whe*_*ies 48
你应该做的是检查使用exists
.像这样:
myOption.exists(_.trim.nonEmpty)
Run Code Online (Sandbox Code Playgroud)
True
当且仅当Option[String]
不是None
而且不为空时才会返回.
一种基于模式匹配的方法,
def isBlank( input : Option[String]) : Boolean =
input match {
case None => true
case Some(s) => s.trim.isEmpty
}
Run Code Online (Sandbox Code Playgroud)
exists
(接受的解决方案)当输入中至少有一个元素时将起作用,但当Some("")
它是None
.
exists
检查是否至少有一个 element( x
) 适用于函数。
例如。
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
Run Code Online (Sandbox Code Playgroud)
同样的情况也发生在Option.empty
,因为其中没有元素,
scala> Option.empty[String].exists(_.isEmpty)
res33: Boolean = false
Run Code Online (Sandbox Code Playgroud)
forall
确保函数应用所有元素也是如此。
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
Run Code Online (Sandbox Code Playgroud)
粗略的方法是过滤nonEmpty
字符串,然后检查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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38618 次 |
最近记录: |