-unit PresetReplace;
+unit StrReplace;
{
- PresetReplace.pas
- GUI\82©\82ç\93Æ\97§\82µ\82½\81A\81u\83v\83\8a\83Z\83b\83g\92u\8a·\81v\83\8d\83W\83b\83N\83N\83\89\83X\82Ì\8eÀ\91\95
+ StrReplace.pas
+ GUI\82©\82ç\93Æ\97§\82µ\82½\81A\95¶\8e\9a\97ñ\92u\8a·\8aÖ\98A\83\8d\83W\83b\83N\83N\83\89\83X\82Ì\8eÀ\91\95
}
interface
-uses Classes, SysUtils, Forms, Menus;
+uses Classes, SysUtils, Forms, Menus, RegexUtils;
type
// \88È\89º\82Ì5\82Â\82Ì\83N\83\89\83X\82Ì\92è\8b`\82Í\81A\8f¬\82³\82¢\95û\82©\82ç\81¨\91å\82«\82¢\95û\82Ö\81A\82Æ
// \8bL\8fq\82µ\82Ä\82 \82é(\8aÜ\82Ü\82ê\82é\95û\82©\82ç\8aÜ\82Þ\95û\81A\82Ì\8f\87\94Ô)
- // \8c\9f\8dõ\8cê\82Æ\92u\8a·\8cê\82Ì\83y\83A\82Æ\82»\82Ì\83I\83v\83V\83\87\83\93\82ð\8bL\98^\82·\82é
+ // \8c\9f\8dõ\8cê\82Æ\92u\8a·\8cê\82Ì\83y\83A\82Æ\82»\82Ì\83I\83v\83V\83\87\83\93\82ð\8bL\98^\82·\82é\8d\\91¢\91Ì
+ TReplacePairRec = record
+ BeforeStr: String;
+ AfterStr: String;
+ IgnoreCase: boolean;
+ UseRegExp: boolean;
+ end;
+
+ // \8c\9f\8dõ\8cê\82Æ\92u\8a·\8cê\82Ì\83y\83A\82Æ\82»\82Ì\83I\83v\83V\83\87\83\93\82ð\8bL\98^\82·\82é\83N\83\89\83X
TReplacePair = class(TCollectionItem)
private
- FIgnoreCase: boolean;
- FBeforeStr: String;
- FAfterStr: String;
+ FPairRec: TReplacePairRec;
procedure SetAfterStr(const Value: String);
procedure SetBeforeStr(const Value: String);
procedure SetIgnoreCase(const Value: boolean);
+ procedure SetUseRegExp(const Value: boolean);
+ function GetAfterStr: String;
+ function GetBeforeStr: String;
+ function GetIgnoreCase: boolean;
+ function GetUseRegExp: boolean;
+ public
+ function ExecuteReplace(TargetStr: String): String;
+ procedure Assign(Source: TPersistent); override;
published
- property BeforeStr: String read FBeforeStr write SetBeforeStr;
- property AfterStr: String read FAfterStr write SetAfterStr;
- property IgnoreCase: boolean read FIgnoreCase write SetIgnoreCase;
+ property BeforeStr: String read GetBeforeStr write SetBeforeStr;
+ property AfterStr: String read GetAfterStr write SetAfterStr;
+ property IgnoreCase: boolean read GetIgnoreCase write SetIgnoreCase;
+ property UseRegExp: boolean read GetUseRegExp write SetUseRegExp;
end;
// TReplacePair\82Ì\83R\83\8c\83N\83V\83\87\83\93\83N\83\89\83X
TReplacePairCollection = class(TCollection)
+ public
+ function ExecuteReplace(TargetStr: String): String;
end;
// TReplacePair\82Ì\83R\83\8c\83N\83V\83\87\83\93\82ð\95Û\8e\9d\82µ\81A\83^\83C\83g\83\8b\82È\82Ç\82ð\82Ü\82Æ\82ß\82Ä
{ TReplacePair }
+procedure TReplacePair.Assign(Source: TPersistent);
+begin
+ if not (Source is TReplacePair) then
+ inherited
+ else
+ FPairRec := (Source as TReplacePair).FPairRec;
+end;
+
+function TReplacePair.ExecuteReplace(TargetStr: String): String;
+var
+ Options: TReplaceFlags;
+begin
+ // 1\82Â\82Ì\92u\8a·\82ð\8eÀ\91\95\82·\82é
+ Result := TargetStr;
+ Options := [rfReplaceAll];
+ if IgnoreCase then
+ Options := Options + [rfIgnoreCase];
+ if UseRegExp then
+ Result := StringReplaceRegExp(Result, BeforeStr, AfterStr, Options)
+ else
+ Result := StringReplace(Result, BeforeStr, AfterStr, Options);
+end;
+
+function TReplacePair.GetAfterStr: String;
+begin
+ Result := FPairRec.AfterStr;
+end;
+
+function TReplacePair.GetBeforeStr: String;
+begin
+ Result := FPairRec.BeforeStr;
+end;
+
+function TReplacePair.GetIgnoreCase: boolean;
+begin
+ Result := FPairRec.IgnoreCase;
+end;
+
+function TReplacePair.GetUseRegExp: boolean;
+begin
+ Result := FPairRec.UseRegExp;
+end;
+
procedure TReplacePair.SetAfterStr(const Value: String);
begin
- FAfterStr := Value;
+ FPairRec.AfterStr := Value;
end;
procedure TReplacePair.SetBeforeStr(const Value: String);
begin
- FBeforeStr := Value;
+ FPairRec.BeforeStr := Value;
end;
procedure TReplacePair.SetIgnoreCase(const Value: boolean);
begin
- FIgnoreCase := Value;
+ FPairRec.IgnoreCase := Value;
+end;
+
+procedure TReplacePair.SetUseRegExp(const Value: boolean);
+begin
+ FPairRec.UseRegExp := Value;
end;
{ TReplacePreset }
FPresets.Assign(Value);
end;
+{ TReplacePairCollection }
+
+function TReplacePairCollection.ExecuteReplace(TargetStr: String): String;
+var
+ i: integer;
+begin
+ Result := TargetStr;
+ for i := 0 to Count-1 do
+ begin
+ Result := (Items[i] as TReplacePair).ExecuteReplace(Result);
+ end;
+end;
+
initialization
Classes.RegisterClass(TReplacePresets);