文字列置換
機能:
文字列を置き換えます。
※最近のDelphiにはStringReplace関数が用意されています。
解説:
関数にしてみました。Srcの中のC1文字列をC2文字列に置換します。
ソースについて:
基本的にASCII文字のみの動作を前提としています。
[Ex.1]
自己呼出の関数になっていますので副作用があります。例えばSrcが'ABCDEFG'の時、C1に'B'、C2に'Bz'を与えると無限ループします。気を付けて下さい(置換というより展開だな^^;)。
[Ex.2]
無限展開はしませんが、少々泥臭くなってしまいました(^^;
[Ex.1]
function Replace(Src,C1,C2:String):String;
var
Position:Integer;
Dmy:String;
begin
Dmy := Src;
repeat
Position := Pos(C1,Dmy);
if Position > 0then
begin
Delete(Dmy,Position,Length(C1));
Insert(C2,Dmy,Position);
Replace(Dmy,C1,C2);
end;
until(Position <= 0);
result := Dmy;
end;
[Ex.2]
function Replace(Src,C1,C2:String):String;
var
Position1,
Position2:Integer;
Dmy:String;
begin
Dmy := Src;
result := '';
Position2 := 1;
repeat
Dmy := Copy(Dmy,Position2,Length(Dmy)-Position2+1);
Position1 := Pos(C1,Dmy);
if Position1 > 0then
begin
Delete(Dmy,Position1,Length(C1));
Insert(C2,Dmy,Position1);
Position2 := Position1+Length(C2);
result := result + Copy(Dmy,1,Position2-1);
end
else
begin
result := result + Dmy;
end;
until(Position1 <= 0);
end;