简单字符串问题,判断某个给定的字符串是否符合某种格式?(100分)

  • 主题发起人 主题发起人 doxpix
  • 开始时间 开始时间
D

doxpix

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:
给定teststr字符串,看是否符合"XX-XX-XX"格式(xx部分是数字)?
"02-05-12" 符合
"01-08-06" 符合
"03-08-24" 符合
"01-8-09" 不符合
"0s-ab-26" 不符合

注意:
1."XX-XX-XX"不是日期格式。
2.不要使用maskedit,用一个函数来实现。
3.别告诉我用ord(teststr[1])<57 and ord(teststr[1])>48来判断啊:-)
4.有没有能实现此功能的一个简单函数?
 
你研究研究format
 
是不是固定格式的字符串,你先copy出来字段再研究就行吧.
 
justice(str:string):boolean;//str:xx-xx-xx
var
i:integer;
rr:string;
begin
if length(str)=8 then
for i:=0 to 7 do
begin
rr:=copy(str,i,1)
if (rr<>'-') and (strtoint(rr)>=0 or strtoint(rr)>=9 )then
result:=true
else begin
result:=false;
break;
end;
end

else result:=false;

end;
 
format没有用。

tokey没有考虑异常,而且并不比我的——
ord(teststr[1])<57 and ord(teststr[1])>48
好呀
*_^

 
他们的排列是有规律的,1,2,4,5,7,8....都是数字,而3,6,9...都是'-'
所以编个循环判断不就成了
 
你把try ....except
加上去呀
代码是我边看边写的
问题当然有了,我只是给你参考嘛,
还要看你的手段
 
function teststr(str:string):boolean;
var
i:byte;
temp:string;
begin
if length(str)=8 then
for i:=1 to 8 do
begin
temp:=copy(str,i,1);
case i of
3,6:if temp='-' then result:=true
else
begin
showmessage(intToStr(i)+':'+temp);
result:=false;
break;
end;
else
if ((temp>='0') and (temp<='9')) then result:=true
else begin
showmessage(intToStr(i)+':'+temp);
result:=false;
break;
end;
end;
end
else
result:=false;
end;
 
没有我想要的答案。
发分完事。
 
to doxpix
能说说为什么没有你想要的答案?你所要的答案是否表达清楚?
 
后退
顶部