Delphi 特殊字符串的替换
编程中,对特殊字符的替换要求很高。特别是,对原代码的修改时,要对象名,VCL控件名,相关参数等特有字符,进行全文修改,和批量修改。因此,有必要设置出一个要求有条件限制性的替换字符函数。
function ReplaceVCLStr(Const S,sOld,sNew:WideString; var iTol:Integer):WideString;
例如:下列源代码进行替换:
type
TPrintOld7Frm = class(TForm)
Edit100: TEdit;
Edit2: TEdit;
RichEdit12: TEditEdit;
DBEdit: TDBEdit;
DteEdit1: TDateEdit;
sEdit1: TEdit;
替换成:
type
TPrintOld7Frm = class(TForm)
sEdit100: TsEdit;
sEdit2: TsEdit;
sRichEdit12: TsEditEdit;
sDBEdit1: TsDBEdit;
sDteEdit1: TsDateEdit;
sEdit: TEdit;
如果要将Edit替换成sEdit,TEdit替换成TsEdit,如果使用常规的替换字符函数,是不行的。例如,仅用sEdit替换Edit,是不可以实现的,违背初衷的,因为Edit是被替换字符,它是最短字符,它还包含在其它不需要替换的字符中间,例如DBRichEdit1中就包含了Edit。简单的替换字符函数执行后,也要将其中的Edit,替换成sEdit,变成DBRichsEdit1(出错了)。
通过实践,本人找到编写此类要求替换字符函数的条件(用于检测该字符的外围环境):
1、检查被替换字符前一位的字符值
(1)认可的字符
(2)不认可的字符
2、检查被替换字符前一位的字符值
(1)认可的字符
(2)不认可的字符
这样,可以完成代码替换字符的要求。
在函数的原代码中,加入上述2个条件后,完成能实现指定字符的替换和修改。
实际运用: