Kotlin digitToIntOrNull用法及代码示例

本文方法及代码示例基于Kotlin 2.1.20 Released

digitToIntOrNull 所在包 kotlin.text.digitToIntOrNull,其相关用法介绍如下:

用法一

kotlin 复制代码
fun Char.digitToIntOrNull(): Int?
  • 返回此 Char 表示的十进制数字的数值,如果此 Char 不是有效的十进制数字,则返回 null。

  • 如果 Char 的 isDigit 为真,则认为 Char 表示十进制数字。在这种情况下,将返回字符的 Unicode 十进制数字值。

用法二

kotlin 复制代码
fun Char.digitToIntOrNull(radix: Int): Int?
  • 返回此 Char 在指定 radix 中表示的数字的数值,如果此 Char 不是指定radix中的有效数字,则返回 null。如果radix不在 2..36 范围内,则引发异常。

  • 如果以下至少一项为真,则认为 Char 表示指定radix中的数字:

    • isDigit是 Char 的 true 并且字符的 Unicode 十进制数字值小于指定的radix 。在这种情况下,返回十进制数字值。
    • Char 是大写拉丁字母 'A' 到 'Z' 之一,其 code 小于 radix + 'A'.code - 10 。在这种情况下,返回this.code - 'A'.code + 10。
    • Char 是小写拉丁字母 'a' 到 'z' 之一,其 code 小于 radix + 'a'.code - 10 。在这种情况下,返回this.code - 'a'.code + 10。
    • Char 是全角拉丁大写字母 '\uFF21' 到 '\uFF3A' 之一,其 code 小于 radix + 0xFF21 - 10 。在这种情况下,返回this.code - 0xFF21 + 10。
    • Char 是全角拉丁小写字母 '\uFF41' 到 '\uFF5A' 之一,其 code 小于 radix + 0xFF41 - 10 。在这种情况下,返回this.code - 0xFF41 + 10。

示例代码:

kotlin 复制代码
import java.util.*
import kotlin.test.*

fun main(args: Array<String>) {
    //sampleStart
    println('5'.digitToIntOrNull()) // 5
    println('3'.digitToIntOrNull(radix = 8)) // 3
    println('A'.digitToIntOrNull(radix = 16)) // 10
    println('K'.digitToIntOrNull(radix = 36)) // 20

    // radix argument should be in 2..36
    // '0'.digitToIntOrNull(radix = 1) //  will fail
    // '1'.digitToIntOrNull(radix = 100) //  will fail
    // only 0 and 1 digits are valid for binary numbers
    println('5'.digitToIntOrNull(radix = 2)) // null
    // radix = 10 is used by default
    println('A'.digitToIntOrNull()) // null
    // symbol '+' is not a digit in any radix
    println('+'.digitToIntOrNull()) // null
    // Only Latin letters are valid for digits greater than 9.
    println('β'.digitToIntOrNull(radix = 36)) // null
    //sampleEnd
}

// 输出
5
3
10
20
null
null
null
null
相关推荐
树下困觉眯15 分钟前
View绘制流程学习--获取WindowManager的三种方式
android·系统架构·view design
vilya1 小时前
我怎么给手机 GUI Agent 做双通道感知:无障碍树为主,投屏像素兜底
android·人工智能
李游Leo1 小时前
HarmonyOS 7 InsightBoard 多形态适配实录 06:ArkUI × 多设备回归:布局抖动、监听释放与全形态验收【鸿蒙心迹】
回归·kotlin·harmonyos
点燃大海2 小时前
手机给平板当键盘?
kotlin
李子红了时2 小时前
阿狸舞台APP(安卓端手机EncFS解密+压缩包解压+视频播放)
android·音视频
事圆则缓2 小时前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
其实防守也摸鱼3 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化
李游Leo3 小时前
HarmonyOS 7 QuickDock 闪控窗开发实录 06:floatView × 回归验收:25轮场景回归、资源基线与发布前收口【鸿蒙心迹】
回归·kotlin·harmonyos
恋猫de小郭3 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
李游Leo3 小时前
HarmonyOS 7 DualCart 平行视界适配实录 06:Navigation × 多窗口回归:路由冲突、恢复一致性与性能验收【鸿蒙心迹】
回归·kotlin·harmonyos