![]() |
|
|
#1
|
|||
|
|||
|
Как осуществить замену нескольких идущих подряд символов в строке?
например в строку вводят hd#d7(378dh3g Нужно взять из текста d#d и заменить на & в итоге в другой строке должно получится h&7(378dh3g Каким способом это можно реализовать? Спасибо. |
|
#2
|
||||
|
||||
|
Поиск по функциям:
Код:
StringReplace Copy Pos PosEx Delete ЗЫ В твоем случае замена была бы такая: Код:
var s: String; begin s:=Edit1.Text; s:=StringReplace(s, 'd#d', '&', [rfReplaceAll]); ShowMessage(s); end; |
|
#3
|
|||
|
|||
|
спасибо большое!
А если мне нужно например несколько комбинаций символов заменить? 7#$ - 3 3$$ - ? (#4 - % вот найти их и заменить другими символами |
|
#4
|
||||
|
||||
|
ну типа можно так
![]() Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
gg = record
old :string;
new :string;
end;
Tarray= array[1..100] of gg;
var
Form1: TForm1;
implementation
{$R *.dfm}
function StrRepAll(text:string;pattern:Tarray):string;
var i:integer;
begin
for i:=1 to length(pattern) do
text:=StringReplace(text,pattern[i].old,pattern[i].new,[rfReplaceAll]);
Result:=text;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a: Tarray;
test:string;
begin
test:='gdfg-1dfgd-2ffgd-3';
a[1].old:='-1';
a[1].new:='1';
a[2].old:='-2';
a[2].new:='2';
a[3].old:='-3';
a[3].new:='3';
test:=StrRepAll(test,a);
showmessage(test);
end;
end. |