C 中判斷是否為數字

2021-09-08 23:32:36 字數 2591 閱讀 7299

c#判斷string是否為數字   

有人提議用int.parse(

string

)的方法,然後通過捕獲異常來判斷返回的值。更好的方法是用正規表示式:

public

intisnumeric(

string

str)

這應該是個好辦法。不過如果要提出更高的要求,例如不僅要判斷字串是否全為數字,還要在判斷後,要求將其進行轉換。那麼上述函式就有缺陷,因為在上面的正規表示式中無法判斷『

-』符號。因此上面的函式只能轉換非負數。尤有甚者,要求轉換的不僅是整數,還包括浮點數,尤其是科學計數法的字串,例如:

strings =

"-3.14159e+10

"這裡面的'e

'、'.

'、'+

'等字元,都是比較特殊的,而且還要求它們出現的位置要符合浮點數或科學計數方法的規定。那麼就不能使用正規表示式了,至少很麻煩(我是這樣認為的,或許有好的方法)。問題還是回到最初的解決方案,就是使用parse()方法和捕獲異常。以下是實現此功能的方法:

public

bool

isnumeric(

string

s, out

double

result)

catch

return

breturn;      

}例如呼叫:

strings1=

"abc";

strings2=

"-3.14159e+10";

double

d1,d2;

bool

ty1 

=isnumeric(s1,

outd1);

bool

ty2 

=isnumeric(s2,

outd2);

結果:ty1

=false

;d1=0;

ty2=

true

;d2=

31415900000

說明:因為涉及到浮點數,就不能使用

-1來做為出現錯誤的返回值,如前面的例子。也就是說本方法有兩個返回值,乙個是判斷轉換是否成功,為bool型;另乙個是轉換成功後的浮點數值。我用out來解決該問題。

本方法仍然適合整型,只需對返回值進行強制轉換即可。

在vb中原有乙個 inumeric函式來判斷

到了c#.net中卻沒有了。

網上很多用的是try{}來做,這一方法不是不行,但是,由於這個是用catch乙個錯誤來實現,會導致資料比較慢(個人嘗試過,覺得慢多了),所以,以下方法使用的是乙個正規表示式得來的

//判斷是否為正整數

public

static

bool

isint(

string

instring)

用這個方法除了判斷是否為數字還可以判斷其他的,比如判斷e

-mail格式是否正確等等,只要正規表示式支援的,這裡都支援,只需要把正規表示式替換了**中藍色的部分即可,關於正則不會的,可以在我blog裡找,有一篇正則的介紹,相當全面!

幾個正規表示式的例子:

"^\\d+$"//

非負整數(正整數 + 0)  

"^[0-9]*[1-9][0-9]*$"//

正整數    

"^((-\\d+)|(0+))$"//

非正整數(負整數 + 0)    

"^-[0-9]*[1-9][0-9]*$"//

負整數    

"^-?\\d+$"//

整數    

"^\\d+(\\.\\d+)?$"//

非負浮點數(正浮點數 + 0)    

"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//

正浮點數    

"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"//

非正浮點數(負浮點數 + 0)    

"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//

負浮點數    

"^(-?\\d+)(\\.\\d+)?$"//

浮點數    

"^[a-za-z]+$"//

由26個英文本母組成的字串    

"^[a-z]+$"//

由26個英文本母的大寫組成的字串    

"^[a-z]+$"//

由26個英文本母的小寫組成的字串    

"^[a-za-z0-9]+$"//

由數字和26個英文本母組成的字串    

"^\\w+$"//

由數字、26個英文本母或者下劃線組成的字串    

"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"//

email位址    

"^[a-za-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\s*)?$"//

url  

C 中判斷是否為數字

c 判斷string是否為數字 有人提議用int.parse string 的方法,然後通過捕獲異常來判斷返回的值。更好的方法是用正規表示式 public intisnumeric string str 這應該是個好辦法。不過如果要提出更高的要求,例如不僅要判斷字串是否全為數字,還要在判斷後,要求將...

C 判斷是否為數字

1 int n string str if int.tryparse str,out n else 2 1 string pat u4e00 u9fa5 regex rg new regex pat match mh rg.match textbox1.text if mh.success 2 fu...

Oracle中判斷字段是否為數字

在我們平常的開發中可能會遇到這樣的問題,就是判斷某一列是否全部由數字組成,我們都知道oracle並沒有給我們提供這樣乙個現成的函式,那麼根據我的經驗我總結了兩個行之有效的方法 列名 column,表名 table 1.使用trim translate函式 select from table wher...