如何安全地转换字符串并从中提取整数并返回该集合

时间:2017-09-13 00:47:19

标签: scala

我有一组看起来像这样的字符串:

"user-123"
"user-498"
"user-9891"

我想返回一组这样的整数:

123
498
9891

我可以这样做:

val mySet = // ....

mySet.map(x => x.replace("user-").toInt)

但是如果toInt解析失败它会崩溃,那么这样做会更安全吗?

4 个答案:

答案 0 :(得分:2)

忽略失败的字符串:

mySet.flatMap(s => Try(s.replace("user-", "").toInt).toOption)

答案 1 :(得分:0)

您可以检查将成功转换为Int的字符串:

mySet.map(_.stripPrefix("user-")).collect { case x if x.forall(_.isDigit) => x.toInt }

答案 2 :(得分:0)

使用isDigit()

Try("user-1234".toCharArray.filter(_.isDigit) .foldLeft("")((a, b) => a + b).toInt) .getOrElse(0)

答案 3 :(得分:0)

您可以使用简单的正则表达式来保留数值。

这样的事情:

val mySet = Seq("user-123","user-498","user-9891")
mySet.map(_.replaceAll("[^\\d]", ""))