JAVA檢測字串是否數值

2021-07-25 13:07:57 字數 1266 閱讀 1810

一,開篇

對於「檢測字串是否數值」,網上搜尋結果確實不少,基本思路都是使用正規表示式,基本上都是直接上**,基本上好像都靠譜

。。。但是談思路的不多。

二,什麼樣的字串才是數值

總的來說,字串的字元只能存在於:①正號②負號③小數點④0~9的數字,且

正號和負號只能出現在頭部且最多只能出現1次;

小數點最多只能出現1次,且可以作為開頭(.01),也可以作為結尾(10.),單小數點又不能單獨存在(.)

三,結論

從上述可以看出,基本上用1個正規表示式來進行判斷的幾乎都會存在漏洞的。

所以筆者的思路是用2個!

【^[-\\+]?[0-9]+[.]?[0-9]*$】是用來匹配和中的小數點(只能出現1次,可以作為結尾,不能單獨存在)

【^[.]?[0-9]+$】用來匹配小數點可以作為開頭

/**

* 檢測是否為數值字串

* 可以有符號位(+或-),可以以小數點開頭,也可以以小數點結尾

* @param str 字串

* @return 是|否數值字串

* @since 2015.12

*/public boolean isnumeric(string str)

//20151130剔除字串首尾空白

str = str.trim();

pattern pattern1 = pattern.compile("^[-\\+]?[0-9]+[.]?[0-9]*$");

if(pattern1.matcher(str).matches() == true)

//再檢測是否有小數點開頭的情形

pattern pattern2 = pattern.compile("^[.]?[0-9]+$");

return (pattern2.matcher(str).matches());

//.0000000漏網

}

對於是否【整數】的檢測就簡單了:為數值,且不包含小數點

return(isnumeric(str) && (str.indexof('.') == fsspec.not_found) );

對於【浮點數】:為數值,且包含小數點

return(isnumeric(str) && (str.indexof('.') != fsspec.not_found) );

以上,僅供拋磚引玉。

檢測字串

instanceof 用來檢測某乙個例項是否屬於這個類 constructor 利用原型構造器的方式檢測資料型別 object.prototype.tostring.call 借用內建類object原型上的tostring方法實現資料型別檢測console.log typeof typeof typ...

JavaScript檢測字串中是否有空格

第一種方法 isnan 使用js自帶全域性函式isnan isnan 返回乙個boolean值,如下 var c hello 字串 isnan c 返回乙個true var c 10 數字 isnan c 返回乙個false 如果以上c為乙個空串或是乙個空格,isnan將把c當作數字0來處理,所以檢...

python檢測字串是否是回文字串

coding utf 8 spyder editor author linguiyuan def reverse text return text 1 def ishuiwen text return text reverse text text input 輸入乙個字串判斷是否是回文字串 n if...