kotlin中的數(shù)據(jù)轉(zhuǎn)換方法(示例詳解)
在 Kotlin 中,將數(shù)字轉(zhuǎn)換為字符串非常簡(jiǎn)單且靈活。以下是幾種常用的方法及其示例:
1. 直接使用 toString() 方法
所有數(shù)字類(lèi)型(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. 字符串模板(自動(dòng)轉(zhuǎn)換)
在字符串模板中,數(shù)字會(huì)自動(dòng)調(diào)用 toString(),無(wú)需顯式轉(zhuǎn)換。
使用 ${} 或 $ 符號(hào)嵌入變量:
val age = 25
val message1 = "年齡是 $age" // 直接嵌入變量,自動(dòng)轉(zhuǎn)為字符串
val message2 = "圓周率: ${3.1415}" // 表達(dá)式也可自動(dòng)轉(zhuǎn)換輸出結(jié)果:
年齡是 25
圓周率: 3.1415
3. 格式化字符串(控制輸出格式)
若需要特定格式(如保留小數(shù)位數(shù)),可以使用 format() 方法或 Java 風(fēng)格的格式化工具。
示例 1:保留兩位小數(shù)
val price = 9.99 val formatted = "%.2f".format(price) // "9.99"
示例 2:填充前導(dǎo)零
val code = 7 val formattedCode = "%03d".format(code) // "007"(3位數(shù)字,不足補(bǔ)零)
示例 3:結(jié)合字符串模板
val temperature = 28.5
val report = "當(dāng)前溫度: ${"%.1f".format(temperature)}°C" // "當(dāng)前溫度: 28.5°C"4. 處理可空類(lèi)型(Int?、Double? 等)
若數(shù)字變量可能為 null,需先安全處理空值,再轉(zhuǎn)換:
val nullableNumber: Int? = null val str = nullableNumber?.toString() ?: "未知" // 如果為 null,返回 "未知"
對(duì)比 Java 的隱式轉(zhuǎn)換
與 Java 不同,Kotlin 禁止隱式類(lèi)型轉(zhuǎn)換,直接拼接數(shù)字和字符串會(huì)報(bào)錯(cuò):
// 錯(cuò)誤示例(無(wú)法編譯):
val errorMsg = "結(jié)果: " + 100 // 需改為 "結(jié)果: ${100}" 或 100.toString()小結(jié)
• 簡(jiǎn)單場(chǎng)景:直接使用 toString() 或字符串模板。
• 復(fù)雜格式:用 "%.2f".format(...) 控制精度或格式。
• 空值安全:結(jié)合 ?. 和 Elvis 操作符 ?: 處理可空類(lèi)型。
通過(guò)這些方法,你可以靈活地將數(shù)字轉(zhuǎn)換為字符串,并根據(jù)需求調(diào)整輸出格式。
在 Kotlin 中,可以將字符串轉(zhuǎn)換為數(shù)字,但需確保字符串格式合法,否則可能拋出異常或返回 null。以下是具體方法和注意事項(xiàng):
1. 直接轉(zhuǎn)換方法
Kotlin 為字符串提供了擴(kuò)展函數(shù),可將字符串轉(zhuǎn)換為目標(biāo)數(shù)字類(lèi)型:
| 方法 | 說(shuō)明 |
|---|---|
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)換失敗時(shí)返回 null 而非拋出異常:
| 方法 | 說(shuō)明 |
|---|---|
toIntOrNull() | 轉(zhuǎn)換失敗返回 null |
toDoubleOrNull() | 同上 |
toLongOrNull() | 同上 |
toFloatOrNull() | 同上 |
示例
val str = "123a" val num = str.toIntOrNull() // null(失?。? // 結(jié)合 Elvis 操作符提供默認(rèn)值 val safeNum = str.toIntOrNull() ?: 0 // 0
3. 處理特殊格式的字符串
若字符串包含非數(shù)字字符(如貨幣符號(hào)、千位分隔符),需先清理再轉(zhuǎn)換:
示例:移除非數(shù)字字符
val priceStr = "$1,234.5"
val cleanedStr = priceStr.replace("[^\\d.]".toRegex(), "") // "1234.5"
val price = cleanedStr.toDoubleOrNull() // 1234.54. 不同進(jìn)制的字符串轉(zhuǎn)換
Kotlin 支持將二進(jìn)制、十六進(jìn)制等格式的字符串轉(zhuǎn)換為數(shù)字:
示例:十六進(jìn)制轉(zhuǎn)十進(jìn)制
val hexStr = "1A" val decimal = hexStr.toInt(16) // 26(16 進(jìn)制)
示例:二進(jìn)制轉(zhuǎn)十進(jìn)制
val binaryStr = "1010" val decimal = binaryStr.toInt(2) // 10(2 進(jìn)制)
5. 使用 NumberFormat(處理本地化格式)
若字符串包含本地化的數(shù)字格式(如逗號(hào)分隔符),可使用 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)換邏輯
若需更復(fù)雜的轉(zhuǎn)換邏輯(如混合單位),可手動(dòng)處理字符串:
示例:解析帶單位的字符串
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é)合 ?: 提供默認(rèn)值。
• 清理格式:移除非法字符后再轉(zhuǎn)換。
• 進(jìn)制轉(zhuǎn)換:通過(guò) toInt(radix) 支持二進(jìn)制、十六進(jìn)制等。
• 本地化處理:使用 NumberFormat 解析復(fù)雜格式。
通過(guò)合理選擇方法,可以高效且安全地將字符串轉(zhuǎn)換為數(shù)字。
到此這篇關(guān)于kotlin中的數(shù)據(jù)轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)kotlin中的數(shù)據(jù)轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android Studio導(dǎo)入so文件到項(xiàng)目中的實(shí)例詳解
這篇文章主要介紹了Android Studio導(dǎo)入so文件到項(xiàng)目中的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
android監(jiān)控sim卡有沒(méi)有服務(wù)示例(sim卡管理)
android監(jiān)聽(tīng)SIM卡有沒(méi)有服務(wù),可以使用android.telephony.PhoneStateListener類(lèi)來(lái)實(shí)現(xiàn),下面是一個(gè)簡(jiǎn)單的小例子,大家參考使用吧2014-01-01
在Android中調(diào)用WebService實(shí)例
這篇文章主要介紹了在Android中調(diào)用WebService實(shí)例,有需要的朋友可以了解一下。2016-11-11
Android實(shí)現(xiàn)3D層疊式卡片圖片展示
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)3D層疊式卡片圖片展示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
Compose自定義View實(shí)現(xiàn)宇智波斑寫(xiě)輪眼
這篇文章主要為大家介紹了Compose自定義View實(shí)現(xiàn)宇智波斑寫(xiě)輪眼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
詳解如何在Flutter中獲取設(shè)備標(biāo)識(shí)符
這篇文章主要為大家介紹了幾種通過(guò)Flutter讀取設(shè)備信息的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下2022-04-04
詳解Android權(quán)限管理之RxPermission解決Android 6.0 適配問(wèn)題
本篇文章主要介紹了Android權(quán)限管理之RxPermission解決Android 6.0 適配問(wèn)題,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Kotlin+buildSrc更好的管理Gradle依賴(lài)譯文
這篇文章主要為大家介紹了Kotlin+buildSrc更好的管理Gradle依賴(lài)譯文及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android屬性動(dòng)畫(huà)實(shí)現(xiàn)布局的下拉展開(kāi)效果
這篇文章主要為大家詳細(xì)介紹了Android屬性動(dòng)畫(huà)實(shí)現(xiàn)布局的下拉展開(kāi)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Android 文件數(shù)據(jù)存儲(chǔ)實(shí)例詳解
這篇文章主要介紹了Android 文件數(shù)據(jù)存儲(chǔ)實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下2016-12-12

