উত্তর:
1। string.toLong()
স্ট্রিংটিকে [দীর্ঘ] সংখ্যা হিসাবে পার্স করে ফলাফল প্রদান করে।
স্ট্রিং যদি কোনও সংখ্যার বৈধ উপস্থাপনা না হয় তবে @ থ্রো নাম্বার ফর্ম্যাটএক্সসেপশন।
2। string.toLongOrNull()
স্ট্রিংটিকে [দীর্ঘ] সংখ্যা হিসাবে পার্স করে এবং ফলাফলটি প্রদান করে বা
null
স্ট্রিং যদি কোনও সংখ্যার বৈধ উপস্থাপনা না হয়।
3। str.toLong(10)
স্ট্রিংটিকে [দীর্ঘ] সংখ্যা হিসাবে পার্স করে ফলাফল প্রদান করে।
স্ট্রিং যদি কোনও সংখ্যার বৈধ উপস্থাপনা না হয় তবে @ থ্রো নাম্বার ফর্ম্যাটএক্সসেপশন।
@ থ্রিজ ইলিজালআরগমেন্ট এক্সেপশন যখন [রেডিক্স] স্ট্রিং-তে রূপান্তরকরণের জন্য কোনও বৈধ রেডিক্স নয়।
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4। string.toLongOrNull(10)
স্ট্রিংটিকে [দীর্ঘ] সংখ্যা হিসাবে পার্স করে এবং ফলাফলটি প্রদান করে বা
null
স্ট্রিং যদি কোনও সংখ্যার বৈধ উপস্থাপনা না হয়।@ থ্রিজ ইলিজালআরগমেন্ট এক্সেপশন যখন [রেডিক্স] স্ট্রিং-তে রূপান্তরকরণের জন্য কোনও বৈধ রেডিক্স নয়।
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
এক্সটেনশন ফাংশন রয়েছে। আপনি এই ব্যবহার করতে পারেন। সম্ভবত @ilya বর্তমান উত্তর কোটলিনের এই উত্তরটি আপডেট করতে পারে ( রেফারেন্স সরান ))toLong()
toInt()
jet.String
এক্সটেনশন পদ্ধতিগুলি String
তাদের অন্যান্য আদিম ধরণের পার্স করার জন্য উপলব্ধ । নীচে উদাহরণ:
str.toLongOrNull()
এবং অনুরূপভাবে নামযুক্ত অন্যান্য পদ্ধতিগুলিও দরকারী যদি আপনি গ্যারান্টি দিতে না পারেন যে ইনপুটটি সঠিকভাবে ফর্ম্যাট হবে। str.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
দ্রষ্টব্য: উল্লেখ করা উত্তরগুলি jet.String
পুরানো। এখানে বর্তমান কোটলিন (1.0):
কোন String
Kotlin ইতিমধ্যে একটি এক্সটেনশন ফাংশন আপনি কল করতে পারেন হয়েছে toLong()
। বিশেষ কিছু প্রয়োজন হয় না, কেবল এটি ব্যবহার করুন।
এর জন্য সমস্ত এক্সটেনশন ফাংশনString
ডকুমেন্টেড। আপনি এপিআই রেফারেন্সে স্ট্যান্ডার্ড লিবের জন্য অন্যকে খুঁজে পেতে পারেন
এটা মজার. এর মতো কোড:
val num = java.lang.Long.valueOf("2");
println(num);
println(num is kotlin.Long);
এই আউটপুট তোলে:
2
true
আমার ধারণা, এই ক্ষেত্রে কোটলিন স্বয়ংক্রিয়ভাবে রূপান্তর করে java.lang.Long
দীর্ঘ আদিম করে তোলে kotlin.Long
। সুতরাং, এটি সমাধান, তবে আমি java.lang প্যাকেজ ব্যবহার ছাড়াই সরঞ্জাম দেখতে পেরে খুশি হব।
প্রকৃতপক্ষে, আপনাকে 'দীর্ঘ' পরীক্ষা করতে হবে এমন 90% সময়ও বৈধ, সুতরাং আপনার প্রয়োজন:
"10".toLongOrNull()
বেসিক ধরণের প্রতিটি 'টু লং' এর জন্য একটি 'অরনুল' সমতুল্য রয়েছে এবং এগুলি কোটলিনের সাথে মিল রেখে অবৈধ কেসগুলি পরিচালনা করার অনুমতি দেয়? বাগ্ধারা।
string.toLong ()
string
আপনার পরিবর্তনশীল কোথায়
উত্তরগুলির মধ্যে যা উল্লেখ করা হয়নি তার মধ্যে একটি ভাল পুরানো জাভা সম্ভাবনা java.lang.Long.decode(String)
।
দশমিক স্ট্রিংস:
কোটলিন String.toLong()
জাভা এর সমান Long.parseLong(String)
:
একটি স্বাক্ষরিত দশমিক দীর্ঘ হিসাবে স্ট্রিং আর্গুমেন্টটিকে পার্স করে । ... ফলস্বরূপ দীর্ঘ মানটি প্রত্যাবর্তন করা হয়, ঠিক যেমনটি যদি
parseLong(java.lang.String, int)
পদ্ধতিতে যুক্তি এবং 10 মুল্যকে দেওয়া হয়েছিল ।
অ-দশমিক স্ট্রিং:
কোটলিন String.toLong(radix: Int)
জাভা ইLong.parseLong(String, int)
এর সমতুল্য :
দ্বিতীয় আর্গুমেন্ট দ্বারা নির্দিষ্ট রেডিক্সে স্ট্রিং আর্গুমেন্টটিকে একটি স্বাক্ষরিত দীর্ঘ হিসাবে পার্স করে। স্ট্রিংয়ের অক্ষরগুলি অবশ্যই নির্দিষ্ট রেডিক্সের অঙ্কের হতে হবে ...
এবং এখানে java.lang.Long.decode(String)
ছবিতে আসে :
একটি স্ট্রিংকে দীর্ঘায়িত করে Dec নিম্নলিখিত ব্যাকরণের দ্বারা প্রদত্ত দশমিক, হেক্সাডেসিমাল এবং অষ্টাল সংখ্যা গ্রহণ করে: ডিকোডেবল স্ট্রিং:
(স্বাক্ষর) দশমিক সংখ্যা | (সাইন) 0x হেক্সডিজিটস | (সাইন) 0 এক্স হেক্সডিজিটস | (সাইন) # হেক্সডিজিটস | (সাইন) 0 অক্টালডিজিটস
সাইন: - | + +
তার মানে এই যে 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
একটি রূপান্তর করতে String
করতে Long
(যে 64-বিট পূর্ণসংখ্যা স্বাক্ষরিত প্রতিনিধিত্ব করে) Kotlin 1.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 |
+—————————————————————————————————————————————+——————————+———————————————————————+