请问C++Builder里有字符串替换的函数吗?或者哪位朋友有自己写的,请指教!(50分)

  • 主题发起人 主题发起人 2you2me
  • 开始时间 开始时间
帮帮忙啊大家。
 
不会没有知道吧?[:(]
 
StringReplace
 
给个自己写的:
C++版:
AnsiString __fastcall ReplaceStr(AnsiString text, AnsiString src, AnsiString dst)
{
AnsiString tmp, res;
tmp = res = text;
int pos = tmp.Pos(src);
while( pos > 0 )
{
res = tmp.SubString(1, pos - 1);
res += dst;
pos += StrLen(dst);
res += tmp.SubString(pos, tmp.Length() - pos + 1);

tmp = res;
pos = tmp.Pos(atom[index].src);
}
return res;
}
Object Pascal版:
function ReplaceStr(s, SourceText, DestText: String):String;
var st,res:string;
i:Integer;
begin
ReplaceStr:='';
if ((s='') or (SourceText='')) then
Exit;
st:=s;
res:='';
i:=Pos(SourceText,s);
while (i>0)do
begin
res:=res+Copy(st,1,i-1)+DestText;
Delete(st,1,(i+Length(SourceText)-1));
{if (DestText<>'') then
Insert(DestText,st,i);}
i:=Pos(SourceText,st);
end;
res:=res+st;
ReplaceStr:=res;
end;
 
直接用StringReplace函数就行了呗。
函数原型:
extern PACKAGE AnsiString __fastcall StringReplace(const AnsiString S, const AnsiString OldPattern, const AnsiString NewPattern, TReplaceFlags Flags);
比如:
ShowMessage(StringReplace"This is a demo for string replace","is","are",TReplaceFlags()<<rfReplaceAll<<rfIgnoreCase));//将全部的is替换成are,替换时不区分大小写
 
后退
顶部