kotlin中的數(shù)據(jù)轉(zhuǎn)換方法(示例詳解)
在 Kotlin 中,將數(shù)字轉(zhuǎn)換為字符串非常簡單且靈活。以下是幾種常用的方法及其示例:
1. 直接使用 toString() 方法
所有數(shù)字類型(Int
、Long
、Double
等)都提供了 toString()
方法,可以直接將數(shù)字轉(zhuǎn)為字符串。
val number = 42 val str1 = number.toString() // "42" val pi = 3.14159 val str2 = pi.toString() // "3.14159"
2. 字符串模板(自動轉(zhuǎn)換)
在字符串模板中,數(shù)字會自動調(diào)用 toString()
,無需顯式轉(zhuǎn)換。
使用 ${}
或 $
符號嵌入變量:
val age = 25 val message1 = "年齡是 $age" // 直接嵌入變量,自動轉(zhuǎn)為字符串 val message2 = "圓周率: ${3.1415}" // 表達式也可自動轉(zhuǎn)換
輸出結(jié)果:
年齡是 25
圓周率: 3.1415
3. 格式化字符串(控制輸出格式)
若需要特定格式(如保留小數(shù)位數(shù)),可以使用 format()
方法或 Java 風格的格式化工具。
示例 1:保留兩位小數(shù)
val price = 9.99 val formatted = "%.2f".format(price) // "9.99"
示例 2:填充前導零
val code = 7 val formattedCode = "%03d".format(code) // "007"(3位數(shù)字,不足補零)
示例 3:結(jié)合字符串模板
val temperature = 28.5 val report = "當前溫度: ${"%.1f".format(temperature)}°C" // "當前溫度: 28.5°C"
4. 處理可空類型(Int?、Double? 等)
若數(shù)字變量可能為 null
,需先安全處理空值,再轉(zhuǎn)換:
val nullableNumber: Int? = null val str = nullableNumber?.toString() ?: "未知" // 如果為 null,返回 "未知"
對比 Java 的隱式轉(zhuǎn)換
與 Java 不同,Kotlin 禁止隱式類型轉(zhuǎn)換,直接拼接數(shù)字和字符串會報錯:
// 錯誤示例(無法編譯): val errorMsg = "結(jié)果: " + 100 // 需改為 "結(jié)果: ${100}" 或 100.toString()
小結(jié)
• 簡單場景:直接使用 toString()
或字符串模板。
• 復雜格式:用 "%.2f".format(...)
控制精度或格式。
• 空值安全:結(jié)合 ?.
和 Elvis 操作符 ?:
處理可空類型。
通過這些方法,你可以靈活地將數(shù)字轉(zhuǎn)換為字符串,并根據(jù)需求調(diào)整輸出格式。
在 Kotlin 中,可以將字符串轉(zhuǎn)換為數(shù)字,但需確保字符串格式合法,否則可能拋出異?;蚍祷?null
。以下是具體方法和注意事項:
1. 直接轉(zhuǎn)換方法
Kotlin 為字符串提供了擴展函數(shù),可將字符串轉(zhuǎn)換為目標數(shù)字類型:
方法 | 說明 |
---|---|
toInt() | 將字符串轉(zhuǎn)為 Int ,若格式非法(如包含字母),拋出 NumberFormatException |
toDouble() | 將字符串轉(zhuǎn)為 Double ,同上 |
toLong() | 將字符串轉(zhuǎn)為 Long ,同上 |
toFloat() | 將字符串轉(zhuǎn)為 Float ,同上 |
示例
val str1 = "123" val num1 = str1.toInt() // 123(成功) val str2 = "3.14" val num2 = str2.toDouble() // 3.14(成功) val str3 = "abc" val num3 = str3.toInt() // 拋出 NumberFormatException(失?。?/pre>
2. 安全轉(zhuǎn)換(避免異常)
使用 toXxxOrNull()
方法,轉(zhuǎn)換失敗時返回 null
而非拋出異常:
方法 | 說明 |
---|---|
toIntOrNull() | 轉(zhuǎn)換失敗返回 null |
toDoubleOrNull() | 同上 |
toLongOrNull() | 同上 |
toFloatOrNull() | 同上 |
示例
val str = "123a" val num = str.toIntOrNull() // null(失敗) // 結(jié)合 Elvis 操作符提供默認值 val safeNum = str.toIntOrNull() ?: 0 // 0
3. 處理特殊格式的字符串
若字符串包含非數(shù)字字符(如貨幣符號、千位分隔符),需先清理再轉(zhuǎn)換:
示例:移除非數(shù)字字符
val priceStr = "$1,234.5" val cleanedStr = priceStr.replace("[^\\d.]".toRegex(), "") // "1234.5" val price = cleanedStr.toDoubleOrNull() // 1234.5
4. 不同進制的字符串轉(zhuǎn)換
Kotlin 支持將二進制、十六進制等格式的字符串轉(zhuǎn)換為數(shù)字:
示例:十六進制轉(zhuǎn)十進制
val hexStr = "1A" val decimal = hexStr.toInt(16) // 26(16 進制)
示例:二進制轉(zhuǎn)十進制
val binaryStr = "1010" val decimal = binaryStr.toInt(2) // 10(2 進制)
5. 使用 NumberFormat(處理本地化格式)
若字符串包含本地化的數(shù)字格式(如逗號分隔符),可使用 NumberFormat
解析:
示例
import java.text.NumberFormat val str = "1,234.5" val format = NumberFormat.getInstance() // 根據(jù)系統(tǒng)本地化設(shè)置解析 val number = format.parse(str)?.toDouble() // 1234.5
6. 自定義轉(zhuǎn)換邏輯
若需更復雜的轉(zhuǎn)換邏輯(如混合單位),可手動處理字符串:
示例:解析帶單位的字符串
fun parsePercentage(str: String): Double? { return str.removeSuffix("%").trim().toDoubleOrNull()?.div(100) } val percentage = parsePercentage("75%") // 0.75
總結(jié)
• 直接轉(zhuǎn)換:toInt()
、toDouble()
等,但需處理異常。
• 安全轉(zhuǎn)換:優(yōu)先使用 toXxxOrNull()
,結(jié)合 ?:
提供默認值。
• 清理格式:移除非法字符后再轉(zhuǎn)換。
• 進制轉(zhuǎn)換:通過 toInt(radix)
支持二進制、十六進制等。
• 本地化處理:使用 NumberFormat
解析復雜格式。
通過合理選擇方法,可以高效且安全地將字符串轉(zhuǎn)換為數(shù)字。
到此這篇關(guān)于kotlin中的數(shù)據(jù)轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)kotlin中的數(shù)據(jù)轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android系統(tǒng)view與SurfaceView的基本使用及區(qū)別分析
這篇文章主要為大家介紹了Android系統(tǒng)view與SurfaceView基本使用的案例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-03-03Android design包自定義tablayout的底部導航欄的實現(xiàn)方法
這篇文章主要介紹了Android design包自定義tablayout的底部導航欄的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的朋友參考下2017-01-01Android創(chuàng)建文件實現(xiàn)對文件監(jiān)聽示例
Android創(chuàng)建文件實現(xiàn)對文件監(jiān)聽,可以用android.os.FileObserver;類來實現(xiàn),下面是實現(xiàn)代碼,內(nèi)有注釋2014-01-01Android中post請求傳遞json數(shù)據(jù)給服務(wù)端的實例
下面小編就為大家分享一篇Android中post請求傳遞json數(shù)據(jù)給服務(wù)端的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01