马上送分:送分小问题
字符串如:
str:='13 asdf .sfs ddss good';
我要得到新字符串,字符串中不含有空格
str1:=13;
str2:='asdf .sfs ddss'
str3:='good' 最好从最右边第一个空格起开始复制
问题点数:20、回复次数:13Top
1 楼hongqi162(失踪的月亮)回复于 2003-12-02 09:50:58 得分 2
先把空格去掉然后再截取
str := StringReplace(str, ' ', '', [rfReplaceAll]); //去空格Top
2 楼ls2008(結婚了吧,傻B了吧)回复于 2003-12-02 09:58:11 得分 3
str_new:=trim(str);(去掉空格)
如果你的字串長度和中間的空格個數一樣就好辦,如果不一樣,就要
根據具體情況來截取了Top
3 楼cnhxjt(瓶子)回复于 2003-12-02 10:01:23 得分 0
谢谢关注!!
可那样不合我的意思
我的意思是
1.将字符串两头的空格去掉后
2.将从左到右磁到第一个空格将字符串给str1
3.从右到左磁到第一个空格并将后面字符串给str3
4.其它的给str2就达到目的了
Top
4 楼milerzhang(土豆)回复于 2003-12-02 10:16:43 得分 2
你知道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;
Top
5 楼soundbug(兼职乞丐)回复于 2003-12-02 10:29:08 得分 2
帮你搞定了
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;Top
6 楼hongqi162(失踪的月亮)回复于 2003-12-02 10:34:33 得分 0
将两端空格去掉trim();
截取13,再截取good,剩下的是....然后trim(剩下的)
leftstr(str,2);//13
rightstr(str,4);//good
midstr(str,3,length(str)-6;//剩下的Top
7 楼cnhxjt(瓶子)回复于 2003-12-02 11:00:56 得分 0
谢谢各位了!!
可是
str1和str3的长度是不固定的啊
str1:=1,2,....,10001
str3:=good,bad,我的最爱,kkkkkkkkkkddd,....
都有可能呀
我的意思是
1.将字符串两头的空格去掉后
2.将从左到右磁到第一个空格将字符串给str1
3.从右到左磁到第一个空格并将后面字符串给str3
4.其它的给str2就达到目的了
看来这个问题还是属于高难度的!!!Top
8 楼cnhxjt(瓶子)回复于 2003-12-02 11:09:24 得分 0
其实我只要知道有没有从右向左读字符串的function就可以了Top
9 楼ls2008(結婚了吧,傻B了吧)回复于 2003-12-02 11:29:04 得分 0
用pos吧,Top
10 楼ls2008(結婚了吧,傻B了吧)回复于 2003-12-02 11:31:51 得分 0
其實就是實現的時候比較麻煩,要附一次值,然後就把用過的字串去掉
righrstr可以從右向左讀取數據Top
11 楼ls2008(結婚了吧,傻B了吧)回复于 2003-12-02 11:32:44 得分 0
rightstr可以從右開始Top
12 楼letmepass(小旋风)回复于 2003-12-02 11:38:33 得分 8
字符串如:
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
自己测一下
Top
13 楼yekai012(叶开)回复于 2003-12-02 12:17:42 得分 3
用lenhth得到总长,
用repeat..... until byte[i]=' ' 和for i=1 to/down to (从两边截取)...循环来控制,并用 str:=byte[i]+str(从后向前);str:=str+byte[i](从前向后);就可以了,Top




