成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Kotlin的digitToIntOrNull玩轉字符轉換

開發 前端
將一個字符轉換為指定進制(radix)下的整數。如果字符在該進制下無效,則返回?null。需要注意的是,進制范圍必須在 2 到 36 之間,否則會拋出異常。

舉個栗子??:你遇到過這些尷尬嗎?

當你在解析驗證碼時遇到字符'G',或者處理用戶輸入時收到一個'?',是不是經常要手寫一堆if-else來檢查字符合法性?現在試試這個神奇函數:

fun parseCode(input: Char): Int? {
    return input.digitToIntOrNull()  // 一行代碼搞定驗證
}

digitToIntOrNull 是 Kotlin 標準庫的一部分,位于 kotlin.text 包下。它有兩個主要的用法:

  1. 默認十進制轉換:直接將一個字符轉換為十進制整數。如果字符不是有效的十進制數字,則返回 null。
  2. 指定進制轉換:將一個字符轉換為指定進制(radix)下的整數。如果字符在該進制下無效,則返回 null。需要注意的是,進制范圍必須在 2 到 36 之間,否則會拋出異常。

這個函數有多智能?

想象你有個全能驗鈔機,不僅能識別人民幣,還能自動切換美元、歐元,甚至能檢測假幣。digitToIntOrNull就是代碼世界的智能驗鈔機:

基礎模式(十進制偵探)

println('7'.digitToIntOrNull())    // 輸出7 → 正經數字
println('??'.digitToIntOrNull())   // 輸出null → 表情包退散!

進階模式(進制變形金剛)

// 十六進制模式
println('F'.digitToIntOrNull(16)) // 輸出15 → 十六進制的寵兒
println('G'.digitToIntOrNull(16)) // 輸出null → 超標的字母

// 三十二進制大挑戰
println('Z'.digitToIntOrNull(32)) // 輸出31 → 字母天花板
println('a'.digitToIntOrNull(32)) // 輸出10 → 大小寫通吃

避坑指南?:這些情況會翻車

① 二進制遇到情場浪子

println('2'.digitToIntOrNull(2))  // null → 二進制只認0和1

② 全角字符的cosplay

val fullWidthA = 'A'  // 全角A(Unicode:\uFF21)
println(fullWidthA.digitToIntOrNull(16))  // 輸出10 → 偽裝成功!

③ 希臘字母的悲劇

println('β'.digitToIntOrNull(36)) // null → 只認拉丁字母

示例:用這個函數寫個進制轉換

fun convertToDecimal(char: Char, base: Int): String {
    return char.digitToIntOrNull(base)?.let { 
        "『$char』在${base}進制中等于 $it"
    } ?: "?? 警報!『$char』在${base}進制里是冒牌貨"
}

fun main() {
    println(convertToDecimal('L', 20))  // → 20進制中L=18
    println(convertToDecimal('喵', 36)) // → 觸發警報
}

冷知識:為什么進制上限是36?

因為拉丁字母(26個) + 數字(10個) = 36個符號,剛好可以覆蓋所有情況。想挑戰更高進制?除非你打算用emoji當數字符號??

什么時候認為字符是有效的數字?

fun Char.digitToIntOrNull(radix: Int): Int?

? 如果字符是常規的十進制數字(0-9),那么它自然是有效的。

? 如果字符是大寫或小寫的拉丁字母(A-Z 或 a-z),并且其編碼值小于 radix + 'A'.code - 10 或 radix + 'a'.code - 10,那么它也是有效的。

? 全角拉丁字母(\uFF21-\uFF3A 或 \uFF41-\uFF5A)同樣適用上述規則。

責任編輯:武曉燕 來源: 沐雨花飛碟
相關推薦

2025-04-21 08:28:49

2018-01-03 11:51:06

KotlinTipsJava

2021-05-18 14:42:55

PythonMySQL

2018-03-15 14:07:17

潤乾Excel行列轉換

2015-03-23 12:33:28

2017-05-22 11:09:53

KotlinAndroid

2024-01-10 08:20:13

參數轉換技巧

2020-10-15 12:46:49

編程書Python數據科學

2010-09-14 17:08:11

SQL函數

2009-02-13 10:04:02

AntXSLXML

2010-05-11 17:45:17

MySQL字符

2019-03-25 20:31:58

IP地址轉換數字

2012-05-03 15:14:57

Mono

2024-04-08 13:59:03

大模型Replicate

2023-12-13 09:22:40

python

2023-12-28 08:22:33

響應數據轉換

2010-09-06 17:22:01

SQL函數

2025-05-23 08:23:05

KotlinDuration單位換算

2021-03-15 09:00:00

開發JavaKotlin

2017-07-21 11:45:12

Windows 10Windows聚焦功能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品视频一区二区三区在线观看 | 人人干人人舔 | 黄色毛片免费视频 | 欧美成人自拍视频 | 日韩av在线中文字幕 | av网站免费看| 成人在线观看免费 | 日日碰狠狠躁久久躁婷婷 | 婷婷色国产偷v国产偷v小说 | 国产成人久久精品 | 亚洲精品456 | 亚洲精品久久久久久久久久吃药 | 国产日韩欧美在线 | 一区视频| 欧美午夜一区 | 亚洲福利 | 久久精品91 | 欧美专区在线 | av一区二区三区四区 | 国产伦精品一区二区三区照片91 | 三级av在线 | 龙珠z国语版在线观看 | 亚洲自拍偷拍欧美 | 精品一区二区三区在线观看 | 福利一区视频 | 日本黄色高清视频 | 国产一区二区三区高清 | 色av一区 | 夜夜操天天艹 | 国产精品不卡视频 | 欧美另类视频在线 | 日韩成人精品一区 | 欧美一区二区三区视频在线 | 成av在线 | 日韩免费高清视频 | 日韩精品无码一区二区三区 | 国产综合在线视频 | 国产高清视频 | 99久久精品一区二区毛片吞精 | 午夜私人影院在线观看 | 久草新视频|