关于字符串交换位置的问题!~~知道的人进来看看!! ( 积分: 100 )

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

aijpccjcy

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个字符串str=1;2;3;4;5;6;
str1=1
str2=4
我想用一个函数把在str中包含的str1和str2交换一下结果变成
str=4;2;3;1;5;6;
有这样的函数吗?如果没有那怎么才能实现我这个功能!
帮忙解决一下,谢谢!
 
function changestr(str:string):string;
var
c:char;
begin
c:=str[1];
str[1]:=str[4];
str[4]:=c;
result:=str;
end;

str:='123456';
showmessage(changestr(str));
给分吧 不要犹豫了
 
字符串用copy函数就可以;
如果是数组就可以用循环交换;
COPY的用法:
COPY('1234.56789',2,8)->>结果是1234.567
用数组循环就比较容易了吧!
 
var
str,str1,str2: string;
begin
str:= stringreplace(str,str2,'~~~~~~~~',[rfReplaceAll]) ;
str:= stringreplace(str,str1,str2,[rfReplaceAll]) ;
str:= stringreplace(str,'~~~~~~~~',str1,[rfReplaceAll]) ;
end;
 
//已知 str1,str2
//先求 len1,len2,pos1,pos2
//再用 Copy联接吧
s := 'AA1,DD2,EF3,QY4,NH5I,NH6';
str1 := 'NH5I';
str2 := 'DD2';
len1 := Length(str1); // 4
len2 := Length(str2); // 3
pos1 := Pos(str1,s); // 17
pos2 := Pos(str2,s); // 5
if pos1>pos2 then
begin
i := len1;
len1 := len2; // 4
len2 := i; // 3
i := pos1;
pos1 := pos2; // 5
pos2 := i; // 17
end;
// 'AA1,DD2,EF3,QY4,NH5I,NH6' -> 'AA1,NH5I,EF3,QY4,DD2,NH6'
s2:=
copy(s,1,pos1-1) + // AA1,
copy(s,pos2,len2)+ // + NH5I
copy(s,pos1+len1,pos2-pos1-len1) + // + ,EF3,QY4,
copy(s,pos1,len1)+ // + DD2
copy(s,pos2+len2,MaxInt); // + ,NH6
 
自己写个吧,上面都那么多了
 
接受答案了.
 
后退
顶部