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

