답변:
1. string.toLong()
문자열을 [Long] 숫자로 구문 분석하고 결과를 리턴합니다.
@throws NumberFormatException 문자열이 유효한 숫자 표현이 아닌 경우.
2. string.toLongOrNull()
문자열을 [Long] 숫자로 구문 분석하고 결과
null
가 문자열이 유효한 숫자 표현이 아닌 경우를 리턴합니다 .
삼. str.toLong(10)
문자열을 [Long] 숫자로 구문 분석하고 결과를 리턴합니다.
@throws NumberFormatException 문자열이 유효한 숫자 표현이 아닌 경우.
@throws IllegalArgumentException [radix]가 문자열 대 숫자 변환에 유효한 기수가 아닌 경우.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4. string.toLongOrNull(10)
문자열을 [Long] 숫자로 구문 분석하고 결과
null
가 문자열이 유효한 숫자 표현이 아닌 경우를 리턴합니다 .@throws IllegalArgumentException [radix]가 문자열 대 숫자 변환에 유효한 기수가 아닌 경우.
public fun String.toLongOrNull(radix: Int): Long? {...}
5. java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
해당 확장 방법이 있습니다.
"10".toLong()
String
확장 기능 및 기타 기능 toLong()
을 가지고 있음을 알기 만하면 toInt()
됩니다. 이것들을 사용할 수 있습니다. 어쩌면 @ilya는이 답변을 현재 Kotlin으로 업데이트 할 수 있습니다 ( jet.String
참조 제거 )
확장 메소드는 String
다른 기본 유형으로 구문 분석 할 수 있습니다. 아래 예 :
str.toLongOrNull()
입력의 형식이 올바르다는 것을 보장 할 수없는 경우 비슷한 이름의 다른 메소드도 유용합니다. 이것으로 당신은 같은 일을 할 수 있습니다str.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
참고 : 언급 한 답변 jet.String
은 구식입니다. 현재 Kotlin (1.0)은 다음과 같습니다.
String
Kotlin의 모든 사용자 는 이미 호출 할 수있는 확장 기능을 가지고 있습니다 toLong()
. 특별한 것이 필요하지 않습니다. 그냥 사용하십시오.
에 대한 모든 확장 기능String
이 문서화되어 있습니다. API 참조 에서 표준 lib에 대한 다른 것을 찾을 수 있습니다.
답변에 언급되지 않은 좋은 오래된 Java 가능성은 java.lang.Long.decode(String)
입니다.
십진 문자열 :
Kotlin String.toLong()
은 Java와 동일합니다 Long.parseLong(String)
.
문자열 인수를 부호있는 10 진수 long 으로 구문 분석합니다 . ... 인수와 기수 10이
parseLong(java.lang.String, int)
메소드의 인수로 제공된 것처럼 정확하게 long 값이 리턴 됩니다.
비소수 문자열 :
Kotlin String.toLong(radix: Int)
은 Java의 e와Long.parseLong(String, int)
같습니다.
문자열 인수를 두 번째 인수로 지정된 기수의 부호있는 long으로 구문 분석합니다. 문자열의 모든 문자는 지정된 기수의 자리수 여야합니다 ...
그리고 여기 java.lang.Long.decode(String)
그림 이 나온다 .
문자열을 Long으로 디코딩합니다. 다음 문법으로 주어진 10 진수, 16 진수 및 8 진수를 허용합니다. DecodableString :
(기호) DecimalNumeral | (기호) 0x HexDigits | (기호) 0X HexDigits | (기호) # HexDigits | (부호) 0 OctalDigits
표시 :-| +
즉 , 다른 메소드가 결과를 생성하는 곳 decode
과 같이 문자열을 구문 분석 할 수 있습니다 ."0x412"
NumberFormatException
val kotlin_toLong010 = "010".toLong() // 10 as parsed as decimal
val kotlin_toLong10 = "10".toLong() // 10 as parsed as decimal
val java_parseLong010 = java.lang.Long.parseLong("010") // 10 as parsed as decimal
val java_parseLong10 = java.lang.Long.parseLong("10") // 10 as parsed as decimal
val kotlin_toLong010Radix = "010".toLong(8) // 8 as "octal" parsing is forced
val kotlin_toLong10Radix = "10".toLong(8) // 8 as "octal" parsing is forced
val java_parseLong010Radix = java.lang.Long.parseLong("010", 8) // 8 as "octal" parsing is forced
val java_parseLong10Radix = java.lang.Long.parseLong("10", 8) // 8 as "octal" parsing is forced
val java_decode010 = java.lang.Long.decode("010") // 8 as 0 means "octal"
val java_decode10 = java.lang.Long.decode("10") // 10 as parsed as decimal
Kotlin 1.3에서 String
to Long
(64 비트 부호있는 정수를 나타냄) 를 변환하는 것은 매우 간단 합니다.
다음 세 가지 방법 중 하나를 사용할 수 있습니다.
val number1: Long = "789".toLong()
println(number1) // 789
val number2: Long? = "404".toLongOrNull()
println("number = $number2") // number = 404
val number3: Long? = "Error404".toLongOrNull()
println("number = $number3") // number = null
val number4: Long? = "111".toLongOrNull(2)
println("numberWithRadix(2) = $number4") // numberWithRadix(2) = 7
실제로 몇 가지 방법이 있습니다.
주어진:
var numberString : String = "numberString"
// number is the Long value of numberString (if any)
var defaultValue : Long = defaultValue
그럼 우리는 :
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString is a valid number ? | true | false |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toLong() | number | NumberFormatException |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toLongOrNull() | number | null |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toLongOrNull() ?: defaultValue | number | defaultValue |
+—————————————————————————————————————————————+——————————+———————————————————————+