FAQ VCL
Операции над строками

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как удалить пробелы, обрамляющие строку?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  Edit1.Text := Trim(s);
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  while s[1] = ' ' do
    Delete(s, 1, 1);
  while s[Length(s)] = ' ' do
    Delete(s, Length(s), Length(s));
  Edit1.Text := s;
end;


Как удалить пробелы, обрамляющие строку слева?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  Edit1.Text := TrimLeft(s);
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  while s[1] = ' ' do
    Delete(s, 1, 1);
  Edit1.Text := s;
end;


Как удалить пробелы, обрамляющие строку справа?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  Edit1.Text := TrimRight(s);
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  while s[Length(s)] = ' ' do
    Delete(s, Length(s), Length(s));
  Edit1.Text := s;
end;


Как удалить из строки все пробелы?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  while Pos(' ', s) > 0 do
    Delete(s, Pos(' ', s), 1);
  Edit1.Text := s;
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  s := StringReplace(s, ' ', '', [rfReplaceAll]);
  Edit1.Text := s;
end;


Как получить индекс первого интересующего нас символа в строке?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  Caption := IntToStr(Pos('Т', s));
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  i: integer;
begin
  s := '   Тестовая строка   ';
  for i := 1 to Length(s) do
    if s[i] = 'Т' then
    begin
      Caption := IntToStr(i);
      Break;
    end;
end;


Как получить индекс последнего интересующего нас символа в строке?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   Caption := IntToStr(LastDelimiter('а', s));
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  i: Integer;
begin
  s := '   Тестовая строка   ';
  for i := Length(s) downto 1 do
    if s[i] = 'а' then
    begin
      Caption := IntToStr(i);
      Break;
    end;
end;


Как проверить наличие интересующей нас буквы в определенной позиции строки?

procedure TForm1.Button3Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  if IsDelimiter('е', s, 5) then
    ShowMessage('Такая буква существует')
  else
    ShowMessage('Такой буквы не существует');
end;


Как определить длинну строки?

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '   Тестовая строка   ';
  Caption := IntToStr(Length(s));
end;


Как сделать бегущую строку?

// Способ первый
var
  Form1: TForm1;
  Str: string = ' Добро пожаловать на сайт http://decoding.narod.ru ';

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Form1.Caption := Str;
  Str:= Copy(Str, 2, Length(Str)-1) + Str[1];
end;

// Способ второй
procedure TForm1.Timer1Timer(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  s := Caption;
  for i := 1 to Length(s)-1 do
    s[i] := Caption[i+1];
  s[Length(s)] := Caption[1];
  Caption := s;
end;


Как заменить подстроку в строке?

// Способ первый
// Можно воспользоваться функцией StringReplace
// Первый параметр - строка, в которой пройзводится замена
// Второй параметр - подстрока, которую нужно заменить
// Третий параметр - строка, которой нужно заменить подстроку
// Последний параметр - флаги:
//    rfReplaceAll - заменить все найденные подстроки
//    rfIgnoreCase - игнорировать регистр букв

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Caption = 'Form1'
  Caption := StringReplace(Caption, '1', '!', [rfReplaceAll, rfIgnoreCase]);
end;

// Спрсоб второй
var
  Form1: TForm1;
  s: string = '111 222 333 444 555';

implementation

function ReplaceStr(const S, Srch, Replace: string): string;
var
  i: Integer;
  Source: string;
begin
  Source := S;
  Result := '';
  repeat
    i := Pos(Srch, Source);
    if i > 0 then
    begin
      Result := Result + Copy(Source, 1, i-1) + Replace;
      Source := Copy(Source, i+Length(Srch), MaxInt);
    end
    else
      Result := Result + Source;
  until i <= 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ReplaceStr(s, ' ', '-'));
end;

// Способ третий
var
  Form1: TForm1;
  s: string = '111 222 333 444 555';

implementation

uses
  System.RegularExpressions;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(TRegEx.Replace(s, ' ', '-'));
end;

При использовании материала - ссылка на сайт обязательна