一个关于文本截取的问题 (100分)

  • 主题发起人 主题发起人 aahben
  • 开始时间 开始时间
A

aahben

Unregistered / Unconfirmed
GUEST, unregistred user!
敬问大家一个问题,有类似下面的字符串'6☆1☆所有标签☆100604☆',
用delphi做,怎样把☆内的数字付给4个字符串,这些数字位数是不固定的
 
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
SL:TStrings;
i:integer;
begin
s:='6☆1☆所有标签☆100604☆';
s:=stringreplace(s,'☆',#13,[rfReplaceAll]);
SL:=tstringList.Create ;
SL.text:=s;
for i:=0 to SL.count -1 do
showmessage('['+SL.strings+']');
end;
 
下面是个非常笨的办法,不过很容易说明问题,因为'☆'是两个字节,所以在pos('☆',s)+2 后面是加2,
这取决与你用什么来做分隔符(分隔符的长度)

procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,s2,s3,s4:string;
ss:Tstringlist;
begin
s:='6☆1☆所有标签☆100604☆';

s1:=copy(s,1,pos('☆',s)-1);
s:=copy(s,pos('☆',s)+2,length(s));
s2:=copy(s,1,pos('☆',s)-1);
s:=copy(s,pos('☆',s)+2,length(s));
s3:=copy(s,1,pos('☆',s)-1);
s:=copy(s,pos('☆',s)+2,length(s));
s4:=copy(s,1,pos('☆',s)-1);
s:=copy(s,pos('☆',s)+2,length(s));
showmessage(s1+':'+s2+':'+s3+':'+s4);
end;
 
稍稍简化一点:
with TStringList.Create do
begin
Text := StringReplace(s,'☆',#13#10,[rfReplaceAll]);
...
Free;
end;
 
把字符串用widestring就可以把☆当成一个字符了
 
多谢各位大哥的帮忙,[^],一定多向你们学习学习,aq100大哥的建议给我解决了问题,
其它各位大哥的建议也让我深受其益,再次感谢
 
谢谢各位
 
后退
顶部