다른 문자도 포함 할 수있는 문자열에서 Long을 얻는 가장 좋은 방법은 무엇일까 궁금합니다. 예를 들어Scala를 사용하여 문자열에서 길게 가져 오기
, "dd는 : rrrt : R : 6,564"당신이 그 형식에 대해 뭔가를 요구하는 경우, 사용하는 숫자 문자열의 다음 추출 형식이나 특히에 대해 뭔가를 알고 있다면 6564
다른 문자도 포함 할 수있는 문자열에서 Long을 얻는 가장 좋은 방법은 무엇일까 궁금합니다. 예를 들어Scala를 사용하여 문자열에서 길게 가져 오기
, "dd는 : rrrt : R : 6,564"당신이 그 형식에 대해 뭔가를 요구하는 경우, 사용하는 숫자 문자열의 다음 추출 형식이나 특히에 대해 뭔가를 알고 있다면 6564
scala> "dd:rrrt:r:6564".filter(_.isDigit).toLong
res0: Long = 6564
될 것이다 Regex
이 편리 (내가 여기 예를 들어 일부 반 일반적인 "그림"형식을 만들고 있어요) 또는 None
(입력의 형식을 본 경우)
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)
이 형식에 맞지 않음).
Nice :) 정규 표현식을 사용하려고 생각했지만 훨씬 더 좋습니다. – user2816456
@flavian In Scala'String'은'scala.collection.immutable.StringOps'로 향상되었습니다. 이것은 항상 범위에있는'scala.Predef'에서 암시 적 변환을 통해 이루어집니다. 다음을 참조하십시오 : http://www.scala-lang.org/files/archive/nightly/docs/library/index.html#scala.collection.immutable.StringOps – Brian
신뢰할 수있는 데이터는 좋지만 실패 할 경우 실패 할 수 있습니다. 문자열에 숫자가 없습니다. 유스 케이스에 따라, 예를 들어 Randall Schulz와 같은 정규 표현식을 사용하여 문자열을 구문 분석하고 예기치 않은 형식을 명시 적으로 처리하는 것이 장기적으로 더 효과적 일 수 있습니다. –