我想实现如下的字符串转换:
如一个字符为:
'abc#fafa#oij'我现在想把上面这个字符串分成三段,分别存入str1,str2,str3让str1的值为:'abc'
str2为:fafa
str3为:oij请大家帮一下忙吧!我实在是笨啊!
如一个字符为:
'abc#fafa#oij'我现在想把上面这个字符串分成三段,分别存入str1,str2,str3让str1的值为:'abc'
str2为:fafa
str3为:oij请大家帮一下忙吧!我实在是笨啊!
s : String;
ss : TStringList;
i : integer;
begin
s:='abc#fafa#oij';
ss:=TStringList.Create; ss.Text:=AnsiReplaceStr(s,'#',#13); for i:=0 to ss.Count-1 do
ShowMessage(ss.Strings[i]);
end;
ss : TStringList;
begin
ss:=TStringList.Create;
ss.Delimiter:='#';
ss.DelimitedText:='abc#fafa#oij';
for i:=0 to ss.Count-1 do
ShowMessage(ss.Strings[i]);
end;
var
s:string;
i:integer;
j:integer;
k:integer;
length_s:integer;
temp_s:string;
begin
s:='abc#fafa#oij';
s:='abc#fafa#oij'+'#';
temp_s:='';
j:=1;
length_s:=length(s);
for i:=1 to length_s do
begin
if s[i]='#' then
begin
for k:=j to i-1 do
begin
temp_s:=temp_s+s[k];
end;
listbox1.Items.Add(temp_s);
j:=i+1;
temp_s:='';
end;
end;
end;end.
a : TStringList;
i : integer;
begin
a:=TStringList.Create;
a.Delimiter:='#';
a.DelimitedText:='abc#fafa#oij';
for i:=0 to a.Count-1 do
ShowMessage(a.Strings[i]);
ss : TStringList;
begin
ss:=TStringList.Create;
ss.Delimiter:='#';
ss.DelimitedText:='abc#fafa#oij';
for i:=0 to ss.Count-1 do
ShowMessage(ss.Strings[i]);
end;
最简单,用好 TStrings类 非常重要
function quzhi(s:string;var r:array of string):integer;
//s为要转换的字符串,r为字符串数组,返回字符串数组的长度
var i,j,n:integer;
begin
j:=1; n:=0;
if s='' then
begin
result:=n;
exit;
end;
for i:=1 to length(s) do
begin
if s[i]='#' then
begin
r[n]:=copy(s,j,i-j);
inc(n);
j:=i+1;
end;
end;
if i>j then
begin
r[n]:=copy(s,j,i-j);
inc(n);
end;
result:=n;
end;
遇到“akdmk※sdkk※kcmkasc※kmscd※cds”
“akdmk[分界]sdkk[分界]kcmkasc[分界]kmscd[分界]cds”就没有AnsiReplaceStr好了。只知其一,不知其二
var soustr,str1,str2,str3:String;
begin
soustr:='abc#fafa#oij';
str1:=copy(soustr,0,POS('#',soustr)-1);
soustr:=copy(soustr,POS('#',soustr)+1,length(soustr)-POS('#',soustr));
str2:=copy(soustr,0,POS('#',soustr)-1);
str3:=copy(soustr,POS('#',soustr)+1,length(soustr)-POS('#',soustr));
end;
一个一个读取字符理论上是可以的,但在DELPHI中这样很慢,有兴趣的话可以用汇编直接去写否则用COPY比较快,因为COPY本身就都是用汇编写的
function GetMaskString(s,mask:string;position:integer):string;
var
str:string;
i,len:integer;
begin
str:='';
for i:=0 to position-1 do
begin
if (pos(mask,s)<=0) then
begin
str:=s;
break;
end;
str:=copy(s,1,pos(mask,s)-1);
len:=length(str);
s:=copy(s,len+2,length(s)-len-1);
end;
result:=str;
end;然后:
str1:=GetMaskString('abc#fafa#oij','#',1);
str2:=GetMaskString('abc#fafa#oij','#',2);
str3:=GetMaskString('abc#fafa#oij','#',3);
str4:=GetMaskString('abc#fafa#oij','#',4);呵呵,简单,实用