--- /dev/null
+unit MojuUtils;
+//**************************
+// \8d¡\82Ì\8f\8a\81A\95¶\8e\9a\97ñ\92u\8a·\8aÖ\90\94 CustomStringReplace\81@\82¾\82¯\81B
+//**************************
+
+interface
+
+uses
+ Classes, SysUtils;
+
+ function CustomStringReplace(S , OldPattern: String;const NewPattern: string): String; overload;
+ function CustomStringReplace(S , OldPattern: String;const NewPattern: string; IgnoreCase : Boolean): String; overload;
+ procedure CustomStringReplace(var S : TStringList; OldPattern: String;const NewPattern: string);overload;
+ procedure CustomStringReplace(var S : TStringList; OldPattern: String;const NewPattern: string; IgnoreCase : Boolean);overload;
+
+
+implementation
+
+function CustomStringReplace(
+ S ,OldPattern: String;
+ const NewPattern: string
+): String;
+var
+ position : Integer;
+ lenOld : Integer;//OldPattern\82Ì\92·\82³
+begin
+
+ position := 0;
+ lenOld := Length(OldPattern);
+ Result := '';
+ position := AnsiPos( OldPattern, S);
+ while position <> 0 do begin
+ Result := Result + Copy(S,1,position -1 ) + NewPattern;
+ Delete(S,1, position + lenOld - 1);
+ position := AnsiPos( OldPattern, S);
+ end;
+ if Length( S ) > 0 then begin
+ Result := Result + S;
+ end;
+
+
+end;
+function CustomStringReplace(
+ S , OldPattern: String;
+ const NewPattern: string;
+ IgnoreCase : Boolean
+): String;
+var
+ position : Integer;
+ lenOld : Integer;//OldPattern\82Ì\92·\82³
+ buffer : String;
+begin
+ position := 0;
+ lenOld := Length(OldPattern);
+ Result := '';
+ if not IgnoreCase then begin
+ Result := CustomStringReplace( S, OldPattern, NewPattern );
+ end else begin
+ buffer := AnsiLowerCase(S);
+ OldPattern := AnsiLowerCase(OldPattern);
+ position := AnsiPos( OldPattern, buffer);
+ while position <> 0 do begin
+ Result := Result + Copy(S,1,position -1 ) + NewPattern;
+ Delete(S,1, position + lenOld - 1);
+ Delete(buffer,1, position + lenOld - 1);
+ position := AnsiPos( OldPattern, buffer);
+ end;
+ if Length( S ) > 0 then begin
+ Result := Result + S;
+ end;
+ end;
+end;
+procedure CustomStringReplace(
+ var S : TStringList;
+ OldPattern: String;
+ const NewPattern: string;
+ IgnoreCase : Boolean
+);
+var
+ i : Integer;
+begin
+ if not IgnoreCase then begin
+ for i := 0 to S.Count - 1 do begin
+ S.Strings[i] := CustomStringReplace( S.Strings[i], OldPattern, NewPattern );
+ end;
+ end else begin
+ for i := 0 to S.Count - 1 do begin
+ S.Strings[i] := CustomStringReplace( S.Strings[i], OldPattern, NewPattern,IgnoreCase );
+ end;
+ end;
+end;
+procedure CustomStringReplace(
+ var S : TStringList;
+ OldPattern: String;
+ const NewPattern: string
+);
+var
+ i : Integer;
+begin
+ for i := 0 to S.Count - 1 do begin
+ S.Strings[i] := CustomStringReplace( S.Strings[i], OldPattern, NewPattern );
+ end;
+end;
+end.