2013-09-25 3 views
1

다른 문자도 포함 할 수있는 문자열에서 Long을 얻는 가장 좋은 방법은 무엇일까 궁금합니다. 예를 들어Scala를 사용하여 문자열에서 길게 가져 오기

, "dd는 : rrrt : R : 6,564"당신이 그 형식에 대해 뭔가를 요구하는 경우, 사용하는 숫자 문자열의 다음 추출 형식이나 특히에 대해 뭔가를 알고 있다면 6564

답변

12
scala> "dd:rrrt:r:6564".filter(_.isDigit).toLong 
res0: Long = 6564 
+0

Nice :) 정규 표현식을 사용하려고 생각했지만 훨씬 더 좋습니다. – user2816456

+0

@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

+1

신뢰할 수있는 데이터는 좋지만 실패 할 경우 실패 할 수 있습니다. 문자열에 숫자가 없습니다. 유스 케이스에 따라, 예를 들어 Randall Schulz와 같은 정규 표현식을 사용하여 문자열을 구문 분석하고 예기치 않은 형식을 명시 적으로 처리하는 것이 장기적으로 더 효과적 일 수 있습니다. –

3

될 것이다 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)이 형식에 맞지 않음).

관련 문제