一个字符串要取出其中的数字,怎么取(50分)

  • 主题发起人 主题发起人 mymy
  • 开始时间 开始时间
M

mymy

Unregistered / Unconfirmed
GUEST, unregistred user!
如果s := '?'#1#1#1#2' '可以用下面的方式
procedure TForm1.Button1Click(Sender: TObject);
var s, s1: string
i, J: integer;
begin
s := '?'#1#1#1#2' ';
for i := 1 to Length(s) do
begin
j := ord(s);
// showMessage(IntToStr(j));
if j < 9 then
s1 := s1 + IntToStr(j)
else
begin
if Length(s1)> 0 then
ShowMessage(s1);
s1 := '';
end;
end;
if Length(s1)> 0 then
ShowMessage(s1);
end;
可是如果s := '?'#256#489#1#2' '那怎么取阿
 
设个常量为"0123456789"
截取字符串得每一个字符,如果该字符在常量中,则将其取出.
 
但是s每次都是不一样的,
 
procedure TForm1.GetNumList(AStr: String
AList: TStrings);
var
i: Integer;
ANum: String
//解析出的数值字符串
begin
for i := 0 to Length(Astr) -1 do
begin
if AStr In ['0'..'9'] then //只能解析出自然数
ANum := ANum + AStr
else begin
if ANum <> '' then
begin
AList.Add(ANum);
ANum := '';
end;
end;
end;
end;
 
function GetNumFromString(s: String):string;
var
i: Integer;
begin
result='';
for i := 0 to Length(s) -1 do
begin
if s In ['0'..'9'] then
result := result + s
end;
end

已调试通过。
 
procedure TForm1.Button1Click(Sender: TObject);
var s, s1: string
i: integer;s2:char;
begin
s := edit1.text;
s1:='';
for i := 1 to Length(s) do
begin
s2:=s;
if s2 in ['0'..'9'] then
s1:=s1+s2;
end;
if s1<>'' then
ShowMessage(s1);
end;
 
如果是这样的S:='#134#1234'可以通过,可现在S:='?'#123#234' '
 
S:='?'#123#234' '
这个字符串是什么东西
 
就算是S:='?'#123#234' '

海无崖的也可以通过!!
 
S:='?'#123#234' '
没有这种表示方法。
 
这是在调试的时候看到的,是串口发送过来的信息。
 
#123就是“左大括号” {
 
晕:
S:='?'#123#234' '

应该是这样给值呀
S:='''+'?'+'''#123#234'''+' '+'''';
 
如果是#是有点问题,#如同c中得/,在截取时先将#去掉再截取试试.
 
不要将变量设为char设为byte试试.
 
麻烦各位高手,能否再帮忙解决一下
 
用TStringList分割字符串的方法。。。。。举例
var MS:TStringList;
MS:=TStringList.Create;
MyStrList.Delimiter:='#'
//指定分隔符
MyStrList.DelimitedText:='...........';
 
多人接受答案了。
 

Similar threads

后退
顶部