我想知道从可能包含其他字符的字符串中获取 Long 的最佳方法是什么。
例如,“dd:rrrt:r:6564”将变为 6564
scala> "dd:rrrt:r:6564".filter(_.isDigit).toLong
res0: Long = 6564
如果您对格式有所了解,或者特别是如果您需要有关该格式的某些信息,那么使用提取数字子字符串Regex
很方便(我在这里为您制作了一些半通用的“图片”格式):
val EmbeddedNumberFmt = """\d{2}:\w{4}:\w:(\d+)""".r
val number =
"12:xyzz:q:6564" match {
case EmbeddedNumberFmt(n) => Some(n.toLong)
case _ => None
}
您现在有一个Some(n)
(如果输入符合格式)或None
(如果输入不符合格式)。