全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4394
推到 Plurk!
推到 Facebook!

如何判斷字串中只能為數字及英文字

答題得分者是:pcboy2
narcysionlin
一般會員


發表:7
回覆:4
積分:2
註冊:2006-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-06 16:07:39 IP:210.80.xxx.xxx 訂閱
請教一下,如何判斷字串中只能為數字及英文字,不能有其他空白鍵,- _ 等字元
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-06 18:19:12 IP:203.73.xxx.xxx 訂閱
in a given for loop judge the expression as
validString := tarString[i] in ['0'..'9', 'a'..'b', 'A'..'B'];
if not validString then break;
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
narcysionlin
一般會員


發表:7
回覆:4
積分:2
註冊:2006-11-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-09 14:52:13 IP:210.80.xxx.xxx 訂閱
Dear 大大:可以寫程式讓我測一下嗎?由於我是初學者所以不是很懂,所以才發問大家的。
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-09 15:00:29 IP:220.130.xxx.xxx 訂閱
['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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-09 15:12:19 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-01-09 15:14:05 IP:220.130.xxx.xxx 訂閱
嘖..
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
系統時間:2017-11-24 21:12:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!