Работа со строками (Как удалить пробелы слева и справа в строке? Как определить количество слов в строке? Как в строке найти слово с заданным номером?)

Страницы работы

7 страниц (Word-файл)

Содержание работы

Как удалить пробелы слева и справа в строке?
 
// Способпервый (самый простой)
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   Edit1.Text := Trim( s ); //Выводим в Edit строку без пробелов слева и справа
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; //Выводим в Edit строку без пробелов слева и справа
end;
                  
Как удалить пробелы слева в строке?
 
// Способпервый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   Edit1.Text := TrimLeft( s ); //Выводим в Edit строку без пробелов слева
end;
 
// Способвторой
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   while s[1] = ' ' do
      Delete( s, 1, 1 );
   Edit1.Text := s; //Выводим в Edit строку без пробелов слева
end;
                  
Как удалить пробелы справа в строке?
 
// Способпервый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   Edit1.Text := TrimRight( s ); //Выводим в Edit строку без пробелов справа
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; //Выводим в Edit строку без пробелов справа
end;
                  
Как удалить в строке лишние пробелы между словами?
(оставив между словами только по одному пробелу – такая строка называется “нормализованной”)
 
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   s:=Trim(s);                 //сначала удаляем пробелы слева и справа в строке
   while Pos( '  ', s ) > 0 do //а затем удаляем лишние пробелы между словами  
      Delete( s, Pos( '  ', s ), 1 );
   Edit1.Text := s; //Выводим в Edit “нормализованную” строку
end;
 
Как удалить из строки все пробелы?
 
// Способпервый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   while Pos( ' ', s ) > 0 do
      Delete( s, Pos( ' ', s ), 1 );
   Edit1.Text := s; //Выводим в Edit строку без пробелов
end;
 
// Способвторой
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   s := StringReplace( s, ' ', '', [rfReplaceAll] );
   Edit1.Text := s; //Выводим в Edit строку без пробелов
end;
{ В функции StringReplace:
     Первый параметр - строка, в которой производится замена
     Второй параметр - подстрока, которую нужно заменить
     Третий параметр - строка, которой нужно заменить подстроку
     Последний параметр - флаги:
        rfReplaceAll - заменить все найденные подстроки
rfIgnoreCase - игнорировать регистр букв
//В данном примере из строки s удаляются все пробелы путем замены ' ' на ''  .             
 
Как получить номер первого интересующего нас символа в строке (например, символа 'Т') ?
 
// Способпервый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   Edit1.Text := IntToStr( Pos( 'Т', s ) ); //Выводим в Edit номер 1-го симв.”T”
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
         Edit1.Text := IntToStr( i ); //Выводим в Edit номер 1-го симв.”T”
         Break;                       //и выходим из цикла
      end;
end;
                  
 
Как получить номер последнего интересующего нас символа в строке (например, символа 'а') ?
 
// Способпервый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   Edit1.Text := IntToStr( LastDelimiter( 'а', s ) ); //Рез-т выводим в Edit
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
         Edit1.Text := IntToStr( i ); //Результат выводим в Edit
         Break;                       //и выходим из цикла
      end;
end;
 
Как проверить наличие интересующей нас буквы в определенной позиции строки (например, символа 'е' в 5-й позиции)?
// Способпервый
procedure TForm1.Button3Click(Sender: TObject);
var
  s: string;
begin
   s := '   Тестовая строка   ';
   if s[5] = 'е' then
      ShowMessage( 'Такая буква существует' )
   else
      ShowMessage( 'Такая буква не существует' );
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 := '   Тестовая строка   ';
   Edit1.Text := IntToStr( Length(s)); //Выводим в Edit длину строки
end;
                  
 
Как заменить подстроку в строке?
 
// Можно воспользоваться функцией StringReplace, у которой:
// Первый параметр - строка, в которой производится замена
// Второй параметр - подстрока, которую нужно заменить
// Третий параметр - строка, которой нужно заменить подстроку
// Последний параметр - флаги:
//    rfReplaceAll - заменить все найденные подстроки
//    rfIgnoreCase - игнорироватьрегистрбукв
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  // В тексте Editзаменяется 1 на ! и результат помещается в тот же Edit
  Edit1.Text := StringReplace(Edit1.Text,'1','!', [rfReplaceAll,rfIgnoreCase] );
end;
 
В данном примере '1'заменяется на '!'во всех случаях, игнорируя регистр букв.                

Похожие материалы

Информация о работе