digitToIntOrNull

fun Char.digitToIntOrNull(): Int?

Returns the numeric value of the decimal digit that this Char represents, or null if this Char is not a valid decimal digit.

A Char is considered to represent a decimal digit if isDigit is true for the Char. In this case, the Unicode decimal digit value of the character is returned.

Since Kotlin

1.5

Samples

import samples.*
import java.util.*
import kotlin.test.*
fun main() { 
   //sampleStart 
   assertPrints('5'.digitToIntOrNull(), "5")
assertPrints('3'.digitToIntOrNull(radix = 8), "3")
assertPrints('A'.digitToIntOrNull(radix = 16), "10")
assertPrints('K'.digitToIntOrNull(radix = 36), "20")

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

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

Returns the numeric value of the digit that this Char represents in the specified radix, or null if this Char is not a valid digit in the specified radix. Throws an exception if the radix is not in the range 2..36.

A Char is considered to represent a digit in the specified radix if at least one of the following is true:

  • isDigit is true for the Char and the Unicode decimal digit value of the character is less than the specified radix. In this case the decimal digit value is returned.

  • The Char is one of the uppercase Latin letters 'A' through 'Z' and its code is less than radix + 'A'.code - 10. In this case, this.code - 'A'.code + 10 is returned.

  • The Char is one of the lowercase Latin letters 'a' through 'z' and its code is less than radix + 'a'.code - 10. In this case, this.code - 'a'.code + 10 is returned.

Since Kotlin

1.5

Samples

import samples.*
import java.util.*
import kotlin.test.*
fun main() { 
   //sampleStart 
   assertPrints('5'.digitToIntOrNull(), "5")
assertPrints('3'.digitToIntOrNull(radix = 8), "3")
assertPrints('A'.digitToIntOrNull(radix = 16), "10")
assertPrints('K'.digitToIntOrNull(radix = 36), "20")

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