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;

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