一些簡單的幫助類(1) String的型別驗證

2022-02-07 12:02:57 字數 2305 閱讀 7016

在工作中經常會遇到 驗證string 中的值是否屬於int型或者是bool又或是date

一般的做法是用方法 型別.tryparse(string,型別) 來做驗證.

string strvalue = "

123"

;

intintvalue;

bool isint = int.tryparse(strvalue, out intvalue);

但是使用此方法需要建立乙個該型別的變數.我工作中寫的是web程式經常乙個頁面要驗證來自前台的值型別有10幾個,這樣就略顯有點麻煩了. 因為我們只要判斷下string的值是不是這個型別就好.

我發現這個tryparse方法基本 bool int date 這些型別都會存在 但是查詢了下他們的介面裡均沒有此方法.又查詢了一遍iconvertible介面子類發現所有子類均存在此方法

於是就用想法給string 加上乙個名為 is的擴充套件方法

因為 tryparse 方法不是實現介面定義的。而c#系統類庫中實現iconvertible介面的幾乎都有tryparse 方法我們就定義型別t是繼承iconvertible的;

但也有可能型別t沒有tryparse 方法或者方法簽名不是string,out t

這種情況下我們丟擲乙個自定義異常 tryparseexception 

還有一點要注意使用反射查詢 tryparse 方法時指定方法的引數型別為 查詢結果是null 因為 tryparse 的第二個引數宣告是 out 的,要使用才能查詢到該方法

///

///typevalidate 的摘要說明

///public

static

class

typevalidate

;

var method = type.getmethod("

tryparse

", types);

if (method == null

)

try);

}catch

}}///

///型別沒有方法 tryparse 或 沒有無參構造方法 或沒有方法簽名 bool tryparse(string,t)的方法

///public

class

tryparseexception : exception

這個幫助類就算是完成了 我們來試下效果吧!

測試**

response.write(string.format("

12131312 is int =

", "

12131312

".is()));

response.write(

string.format("

121313123131231 is int =

", "

121313123131231

".is()));

response.write(

string.format("

1231231231313123 is int =

", "

1231231231313123

".is()));

response.write(

string.format("

adadasda is int =

", "

adadasda

".is()));

response.write(

string.format("

true is bool =

", "

true

".is()));

response.write(

string.format("

1 is bool =

", "

1".is()));

response.write(

string.format("

2013/4/5 06:06:06 is date =

", "

2013/4/5 06:06:06

".is()));

結果12131312 is int =true

121313123131231 is int =false

1231231231313123 is int =false

adadasda is int =false

true is bool =true

1 is bool =false

2013/4/5 06:06:06 is date =true

技術***

String類的一些問題

string a hello string b hello string c he llo string d he new string llo a b 1 a c 2 a d 3首先公布答案,式子1返回true,式子2返回true,式子3返回false 式子1很好理解,由於存在字面量池,在用字面量...

string類的一些成員函式

1 const char data data 函式返回指向自己的第乙個字元的指標.由於data 函式返回的是const char 所以不能直接通過指標修改返回的字串的值,如果要修改,必須把型別轉化為char 2 const char c str c str 函式返回乙個指向正規c字串的指標,內容與本...

String 類的常用的一些方法

string 類的總結。string 類一旦被建立,就不能被改變。以下是string類的常用方法,必須熟記和掌握。1,char charat int index 根據索引角標來獲取對應的char型別字元。2,int indexof int ch 返回指定字元在字串中第一次出現的索引角標。如果沒有,返...