如何判斷字串中只能為數字及英文字 |
答題得分者是:pcboy2
|
narcysionlin
一般會員 發表:7 回覆:4 積分:2 註冊:2006-11-01 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
narcysionlin
一般會員 發表:7 回覆:4 積分:2 註冊:2006-11-01 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
['0'..'9', 'a'..'b', 'A'..'B'] 這就是一個Delphi的Set(集合)
這個集合包含了所有你希望使用者可以使用的所有字元 對一個字串利用迴圈從頭跑一遍,如果字串中的任何一個字元不在這個集合裡面, 那麼就是不合法的輸入 iChar in [..]就是說iChar是否在[..]這個集合裡面,它跟>, < 一樣會拋出一個boolean值 或者是0的ASCII碼是48,A應該是65,你可以檢查每個字元是不是在合法的字元範圍內 iChar>=48 or iChar<=57...etc Chr可以將數字轉成字元,Ord則可以把字元轉成ASCII碼 你可以查查help上這些函式的用法 我打程式碼會比打這些字還要省力的多,但希望你自己去思考
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
function StringValidOK(s : String): boolean;
var i: Integer; begin StringValidOK:=true; for i:=1 to Length(s) do begin if not (( (s[i]<='z') and (s[i]>='a') ) or ((s[i]<='Z') and (s[i]>='A')) or ((s[i]<='9') and (s[i]>='0'))) then // 只要有一個字元不符合, 驗證失敗 StringValidOK:=false; end; end; procedure TForm1.FormCreate(Sender: TObject); var s1, s2 : String; begin Memo1.Clear; s1:='12zsfds'; if StringValidOK(s1) then Memo1.Lines.Add(s1 ' is OK') else Memo1.Lines.Add(s1 ' is not OK'); s2:='12zsfds_'; if StringValidOK(s2) then Memo1.Lines.Add(s2 ' is OK') else Memo1.Lines.Add(s2 ' is not OK'); end;
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |