我有一组看起来像这样的字符串:
"user-123"
"user-498"
"user-9891"
我想返回一组这样的整数:
123
498
9891
我可以这样做:
val mySet = // ....
mySet.map(x => x.replace("user-").toInt)
但是如果toInt解析失败它会崩溃,那么这样做会更安全吗?
答案 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]", ""))