在Java中你可以写Boolean.valueOf(myString).但是在Scala中,java.lang.Boolean隐藏了scala.Boolean缺少此功能的东西.切换到使用原始Java版本的布尔值很容易,但这似乎不对.
那么Scala中用于true从字符串中提取的单行,规范解决方案是什么?
Dav*_*haw 125
啊,我很傻.答案是myString.toBoolean.
use*_*601 92
这个怎么样:
import scala.util.Try
Try(myString.toBoolean).getOrElse(false)
Run Code Online (Sandbox Code Playgroud)
如果输入字符串未转换为有效的布尔值,false则返回而不是抛出异常.这种行为更类似于Java的行为Boolean.valueOf(myString).
Jes*_*per 10
注意:不要new Boolean(myString)用Java 编写- 总是使用Boolean.valueOf(myString).使用new变体不必要地创建一个Boolean对象; 使用valueOf变体不会这样做.
问题myString.toBoolean是它会抛出一个异常,如果myString.toLowerCase不是一个"true"或"false"(甚至字符串中的额外空格将导致抛出异常).
如果你想要完全相同的行为java.lang.Boolean.valueOf,那么使用它完全限定,或者以不同的名称导入布尔值,例如,import java.lang.{Boolean=>JBoolean}; JBoolean.valueOf(myString).或写自己的方法来处理你自己的特殊情况(例如,您可能希望"t"成为true为好).
Scala 2.13引入String::toBooleanOption,其组合,以Option::getOrElse提供一个安全的方式来提取Boolean作为String:
"true".toBooleanOption.getOrElse(false) // true
"false".toBooleanOption.getOrElse(false) // false
"oups".toBooleanOption.getOrElse(false) // false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38186 次 |
| 最近记录: |