Scala : 문자열을 부울로 우아하게 변환
Java에서는 Boolean.valueOf(myString)
. 그러나 Scala에서는 이 기능이없는 java.lang.Boolean
숨겨져 scala.Boolean
있습니다. 부울의 원래 Java 버전을 사용하는 것으로 전환하는 것은 쉽지만 옳지 않은 것 같습니다.
그렇다면 true
문자열에서 추출하기위한 Scala의 단선 표준 솔루션은 무엇일까요?
아, 나는 어리 석다. 대답은 myString.toBoolean
입니다.
이것은 어떤가요:
import scala.util.Try
Try(myString.toBoolean).getOrElse(false)
입력 문자열이 유효한 부울 값으로 변환되지 않으면 false
예외가 발생하는 것과 반대로 반환됩니다. 이 동작은의 Java 동작과 더 유사합니다 Boolean.valueOf(myString)
.
참고 : new Boolean(myString)
Java로 작성하지 말고 항상 Boolean.valueOf(myString)
. new
변형을 사용하면 불필요하게 Boolean
개체 가 생성됩니다 . valueOf
변형을 사용하면 이 작업이 수행되지 않습니다.
문제는 myString.toBoolean
경우에 예외를 던질 것입니다 myString.toLowerCase
정확히 중 하나가 아닌 "true"
나 "false"
(예외가 슬로우됩니다 문자열도 여분의 공백).
와 정확히 동일한 동작을 원하면 java.lang.Boolean.valueOf
정규화 된 것을 사용하거나 다른 이름 (예 :)으로 부울을 가져옵니다 import java.lang.{Boolean=>JBoolean}; JBoolean.valueOf(myString)
. 또는 자신의 특정 상황 (예를 들어, 당신은 할 수 있습니다 처리하는 자신 만의 방법을 쓰기 "t"
로 true
뿐만 아니라).
Scala 2.13
에 String::toBooleanOption
결합 된 소개 Option::getOrElse
는를 다음 Boolean
과 같이 추출하는 안전한 방법을 제공 합니다 String
.
"true".toBooleanOption.getOrElse(false) // true
"false".toBooleanOption.getOrElse(false) // false
"oups".toBooleanOption.getOrElse(false) // false
나는 오늘 이것을 재미있게 보내고 1/0 값 세트를 부울로 매핑했습니다. Spark 1.4.1로 되돌려 야했고 마침내 다음과 같이 작동했습니다.
Try(if (p(11).toString == "1" || p(11).toString == "true") true else false).getOrElse(false))
여기서 p (11)은 데이터 프레임 필드입니다.
내 이전 버전에는 "Try"가 없었습니다. 이것은 작동하며 다른 방법을 사용할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/1470230/scala-elegant-conversion-of-a-string-into-a-boolean
'Programing' 카테고리의 다른 글
PHP를 사용하여 어제 날짜를 얻는 방법? (0) | 2020.10.28 |
---|---|
파일에서 읽은 참 / 거짓 값을 부울로 변환 (0) | 2020.10.28 |
Android에서 이미지를 공유하기 위해 "Share image using"공유 의도를 사용하는 방법은 무엇입니까? (0) | 2020.10.28 |
Ruby로 XLS 및 XLSX (MS Excel) 파일 구문 분석? (0) | 2020.10.28 |
PHP에서 에코 내에 줄 바꿈을 추가하는 방법은 무엇입니까? (0) | 2020.10.28 |