function SimwolZamenit(s, simwol_star, simwol_now: string; Registr_star, Registr_now: boolean): string;
var i, LSS: integer;
sC, SS, SN: string;
begin
LSS:=Length(simwol_star);
i:=1;
While (i<=Length(s)) and (s<>'') do
begin
sC:=Copy(s, i, LSS);
If not Registr_star and not Registr_now then
begin
If Registr(sC) then
begin
sC:=RegistrWerhniy(sC);
SS:=RegistrWerhniy(simwol_star);
SN:=RegistrWerhniy(simwol_now);
end else
begin
sC:=RegistrNizhniy(sC);
SS:=RegistrNizhniy(simwol_star);
SN:=RegistrNizhniy(simwol_now);
end;
end;
If Registr_star and not Registr_now then
begin
SS:=simwol_star;
If Registr(simwol_now) then
SN:=RegistrWerhniy(simwol_now) else
SN:=RegistrNizhniy(simwol_now);
If Registr(sC) and Registr(simwol_star) then
SN:=RegistrWerhniy(simwol_now);
If not Registr(sC) and not Registr(simwol_star) then
SN:=RegistrNizhniy(simwol_now);
end;
If not Registr_star and Registr_now then
begin
SN:=simwol_now;
If Registr(sC) then
SS:=RegistrWerhniy(simwol_star) else
SS:=RegistrNizhniy(simwol_star);
end;
If Registr_star and Registr_now then
begin
SS:=simwol_star;
SN:=simwol_now;
end;
If (sC=SS) and (sC<>'') then
begin
Delete(s, i, LSS);
Insert(SN, s, i);
i:=i+Length(SN)-1;
end;
i:=i+1;
end;
Result:=s;
end;
где
s - исходная строка;
simwol_star - старый символ (фраза);
simwol_now - новый символ (фраза);
Registr_star - соблюдение регистра старого символа;
Registr_now - соблюдение регистра нового символа.
Например, SimwolZamenit('Программист', 'М', 'Н', false, true) выведет 'ПрограННист'; SimwolZamenit('барабАн', 'ба', 'ле', true, false) выведет 'лерабАн'.
Примечание. Для полноценной работы данной функции необходимо скопировать функции из раздела "Операции с регистрами":
function Registr(s: string): boolean;
function RegistrNizhniy(s: string): string;
function RegistrWerhniy(s: string): string;
|