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

用Kotlin的digitToIntOrNull玩轉(zhuǎn)字符轉(zhuǎn)換

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

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

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

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

digitToIntOrNull 是 Kotlin 標(biāo)準(zhǔn)庫的一部分,位于 kotlin.text 包下。它有兩個主要的用法:

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

這個函數(shù)有多智能?

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

基礎(chǔ)模式(十進(jìn)制偵探)

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

進(jìn)階模式(進(jìn)制變形金剛)

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

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

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

① 二進(jìn)制遇到情場浪子

println('2'.digitToIntOrNull(2))  // null → 二進(jìn)制只認(rèn)0和1

② 全角字符的cosplay

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

③ 希臘字母的悲劇

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

示例:用這個函數(shù)寫個進(jìn)制轉(zhuǎn)換

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

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

冷知識:為什么進(jìn)制上限是36?

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

什么時候認(rèn)為字符是有效的數(shù)字?

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

? 如果字符是常規(guī)的十進(jìn)制數(shù)字(0-9),那么它自然是有效的。

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

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

責(zé)任編輯:武曉燕 來源: 沐雨花飛碟
相關(guān)推薦

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行列轉(zhuǎn)換

2015-03-23 12:33:28

2017-05-22 11:09:53

KotlinAndroid

2024-01-10 08:20:13

參數(shù)轉(zhuǎn)換技巧

2010-09-14 17:08:11

SQL函數(shù)

2009-02-13 10:04:02

AntXSLXML

2020-10-15 12:46:49

編程書Python數(shù)據(jù)科學(xué)

2010-05-11 17:45:17

MySQL字符

2019-03-25 20:31:58

IP地址轉(zhuǎn)換數(shù)字

2012-05-03 15:14:57

Mono

2023-12-13 09:22:40

python

2024-04-08 13:59:03

大模型Replicate

2025-05-23 08:23:05

KotlinDuration單位換算

2021-03-15 09:00:00

開發(fā)JavaKotlin

2010-09-06 17:22:01

SQL函數(shù)

2023-12-28 08:22:33

響應(yīng)數(shù)據(jù)轉(zhuǎn)換

2017-07-21 11:45:12

Windows 10Windows聚焦功能
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久精品日产第一区二区三区 | 欧美一级黄色片 | 一区二区三区中文字幕 | 国外激情av| 国产欧美精品一区二区三区 | 亚洲色图婷婷 | 久久中文一区二区 | 成年人黄色一级毛片 | 久久综合久久综合久久 | 综合国产 | 亚洲人的av | 亚洲91视频 | 男人的天堂一级片 | 欧美精品91爱爱 | 国产精品伦理一区 | 久草免费在线视频 | 国产黄色网址在线观看 | 羞羞视频免费观看入口 | 日韩精品无码一区二区三区 | 你懂的国产 | 一级毛片视频 | 视频一区二区三区四区五区 | 国产精品久久久久久久久久久久久久 | 精品亚洲一区二区三区 | 久在线 | www.v888av.com | 日本不卡免费新一二三区 | 爱高潮www亚洲精品 中文字幕免费视频 | 三级av网址| 亚洲精品视频免费观看 | 一二三区在线 | 免费看国产精品视频 | 欧美a级成人淫片免费看 | 国产蜜臀 | 97avcc| 亚洲精品免费在线观看 | 亚洲一区二区三区免费在线观看 | 亚洲一区二区av | 国产欧美性成人精品午夜 | 日韩精品一区二区三区视频播放 | 成人欧美一区二区三区在线观看 |