你知道VB里的split函数吗?可delphi里没有!我们可以自己写,我举个例子(转载): function split(s,s1:string):TStringList; begin Result:=TStringList.Create; while Pos(s1,s)>0 do begin Result.Add(Copy(s,1,Pos(s1,s)-1)); Delete(s,1,Pos(s1,s)); end; Result.Add(s); end;procedure TForm1.Button1Click(Sender: TObject); var s1:TStringList; begin s1:=split('11111111 2222 33333 44444',' '); Memo1.Lines.AddStrings(s1); s1.Free; end;
str := StringReplace(str, ' ', '', [rfReplaceAll]); //去空格
如果你的字串長度和中間的空格個數一樣就好辦,如果不一樣,就要
根據具體情況來截取了
可那样不合我的意思
我的意思是
1.将字符串两头的空格去掉后
2.将从左到右磁到第一个空格将字符串给str1
3.从右到左磁到第一个空格并将后面字符串给str3
4.其它的给str2就达到目的了
function split(s,s1:string):TStringList;
begin
Result:=TStringList.Create;
while Pos(s1,s)>0 do
begin
Result.Add(Copy(s,1,Pos(s1,s)-1));
Delete(s,1,Pos(s1,s));
end;
Result.Add(s);
end;procedure TForm1.Button1Click(Sender: TObject);
var
s1:TStringList;
begin
s1:=split('11111111 2222 33333 44444',' ');
Memo1.Lines.AddStrings(s1);
s1.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str,str1,str2,str3: string;
i,j: Integer;
begin
str:='13 asdf .sfs ddss good';
i := pos(' ',str);
j := pos('good',str);
str1 := copy(str,1,i-1);
str2 := copy(str,i,j-i);
str3 := copy(str,j,length(str)-j+1);
Label1.Caption := str1;
//如果不要空格,可相应加上trim函数去掉两边空格Trim(str1)
Label2.Caption := str2;
Label3.Caption := str3;
end;
leftstr(str,2);//13
rightstr(str,4);//good
midstr(str,3,length(str)-6;//剩下的
可是
str1和str3的长度是不固定的啊
str1:=1,2,....,10001
str3:=good,bad,我的最爱,kkkkkkkkkkddd,....
都有可能呀我的意思是
1.将字符串两头的空格去掉后
2.将从左到右磁到第一个空格将字符串给str1
3.从右到左磁到第一个空格并将后面字符串给str3
4.其它的给str2就达到目的了看来这个问题还是属于高难度的!!!
righrstr可以從右向左讀取數據
str:='13 asdf .sfs ddss good';
我要得到新字符串,字符串中不含有空格
str1:=13;
str2:='asdf .sfs ddss'
str3:='good' 最好从最右边第一个空格起开始复制VAR K:STRING;K:=STR; STR1:=TRIM(COPY(STR,1,POS(' ',STR)-1); //13
STR:=TRIM(DELETE(STR,1,LENTTH(STR1)));
str2:=TRIM(COPY(STR,1,POS(' ',STR)-1); //asdf .sfs ddss
str:=TRIM(DELETE(STR,1,LENTTH(STR2)));
str3:=TRIM(COPY(STR,1,POS(' ',STR)-1); //good
自己测一下
用repeat..... until byte[i]=' ' 和for i=1 to/down to (从两边截取)...循环来控制,并用 str:=byte[i]+str(从后向前);str:=str+byte[i](从前向后);就可以了,