在此程序中,您將學(xué)習(xí)不同的技術(shù)來檢查Kotlin中的字符串是否為數(shù)字。
import java.lang.Double.parseDouble fun main(args: Array<String>) { val string = "12345s15" var numeric = true try { val num = parseDouble(string) } catch (e: NumberFormatException) { numeric = false } if (numeric) println("$string 是一個數(shù)字") else println("$string 不是一個數(shù)字") }
運行該程序時,輸出為:
12345s15 不是一個數(shù)字
在上面的程序中,我們有一個名為string的字符串,其中包含要檢查的字符串。 我們還有一個布爾值numeric,用于存儲最終結(jié)果是否為數(shù)字。
為了檢查string是否只包含數(shù)字,在try塊中,我們使用Double的parseDouble()方法將字符串轉(zhuǎn)換為Double。
如果拋出錯誤(即NumberFormatException錯誤),則表示string不是數(shù)字,并設(shè)置 numeric 為false。否則,這是一個數(shù)字。
但是,如果要檢查是否有一定數(shù)量的字符串,則需要將其更改為函數(shù)。而且,邏輯基于拋出異常,這可能會非常昂貴。
相反,我們可以使用正則表達(dá)式的功能來檢查字符串是否為數(shù)字,如下所示。
fun main(args: Array<String>) { val string = "-1234.15" var numeric = true numeric = string.matches("-?\\d+(\\.\\d+)?".toRegex()) if (numeric) println("$string 是一個數(shù)字") else println("$string 不是一個數(shù)字") }
運行該程序時,輸出為:
-1234.15 是一個數(shù)字
在上面的程序中,我們使用 regex 來檢查 string 是否為數(shù)字,而不是使用try-catch塊。這是使用String的matches()方法完成的。
在matches()方法中
-? 允許零或更大-的字符串中的負(fù)數(shù)。
\\d+ 檢查字符串必須至少包含1個或多個數(shù)字(\\d)。
(\\.\\d+)? 允許零個或多個給定模式(\\.\\d+),其中
\\.檢查字符串是否包含.(小數(shù)點)
如果是,則應(yīng)至少跟一個或多個數(shù)字\\d+。
這是等效的Java代碼:檢查字符串是否為數(shù)字的Java程序。