回答:
1。 string.toLong()
文字列を[Long]数として解析し、結果を返します。
@throws NumberFormatException-文字列が数値の有効な表現でない場合。
2。 string.toLongOrNull()
文字列を[Long]の数値として解析し、結果を返す
null
か、文字列が数値の有効な表現でない場合に返します。
3。 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
sが他のプリミティブ型に解析するための拡張メソッドが利用可能です。以下の例:
str.toLongOrNull()
また、入力が正しくフォーマットされることが保証できない場合は、他の同様の名前のメソッドも役立ちます。これを使用すると、次のようなことができますstr.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
注:言及されてjet.String
いる回答は古くなっています。現在のKotlin(1.0)は次のとおりです。
String
Kotlinのいずれにも、呼び出し可能な拡張関数がすでにありますtoLong()
。特別なことは必要ありません、それを使用してください。
のすべての拡張関数String
が文書化されています。あなたはAPIリファレンスで標準ライブラリの他のものを見つけることができます
実際には、「long」が有効であることを確認する必要がある時間の90%が有効であるため、次のものが必要です。
"10".toLongOrNull()
基本タイプの「toLong」ごとに「orNull」に相当するものがあり、Kotlinを使用して無効なケースを管理できますか?熟語。
答えで言及されていない古き良きJavaの可能性の1つは、ですjava.lang.Long.decode(String)
。
10進数文字列:
Kotlin String.toLong()
はJavaと同等Long.parseLong(String)
です。
文字列引数を符号付き10進数のlongとして解析します。...結果のlong値が返されます。引数と基数10が
parseLong(java.lang.String, int)
メソッドへの引数として指定された場合とまったく同じです。
10進数以外の文字列:
Kotlin String.toLong(radix: Int)
はJavaのeLong.parseLong(String, int)
と同等です。
2番目の引数で指定された基数で、文字列引数を符号付き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でa String
をLong
(64ビット符号付き整数を表す)に変換するのは非常に簡単です。
次の3つの方法のいずれかを使用できます。
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
NumberFormatException
解析中に処理したくない場合
var someLongValue=string.toLongOrNull() ?: 0
実際には、いくつかの方法があります。
与えられた:
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 |
+—————————————————————————————————————————————+——————————+———————————————————————+