Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Перевернуть строку 3

Delphi , Синтаксис , Текст и Строки

Перевернуть строку 3

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function ReverseString1(const s: string): string;
 var
   i, len: Integer;
 begin
   len := Length(s);
   SetLength(Result, len);
   for i := len downto 1 do
   begin
     Result[len - i + 1] := s[i];
   end;
 end;

 function ReverseString2(const Str: string): string;
 // by Ido Kanner 
var
   ch: Char;
   i, Size: Integer;
 begin
   Result := Str;
   Size   := Length(Result);
   if (Size >= 2) then
   // 2 or more chars 
  begin
     // For 1 to middle of the string 
    for i := 1 to (Size div 2) do
     begin
       // Lets get the charecter of the current place in the string 
      ch := Result[i];
       // Place the Current pos of the char 
      // with the char of it's mirror place... 
      Result[i] := Result[Size - (i - 1)];
       // In the mirror place we will put char of the 
      // Original place... And we switched places !!! 
      Result[Size - (i - 1)] := ch;
     end
   end;
 end;


 function ReverseString3(S: string): string;
 // by Rudy Velthuis 
var
   P, Q: PChar;
   C: Char;
 begin
   Result := S;
   if Length(Result) = 0 then Exit;
   P := PChar(Result);
   Q := P + Length(Result) - 1;
   while P < Q do
   begin
     C := P^;
     P^ := Q^;
     Q^ := C;
     Inc(P);
     Dec(Q);
   end;
 end;

 procedure ReverseString4(var S: string);
 // by Rudy Velthuis 
var
   P, Q: PChar;
   C: Char;
 begin
   if Length(S) = 0 then Exit;
   P := PChar(S);
   Q := P + Length(S) - 1;
   while P < Q do
   begin
     C := P^;
     P^ := Q^;
     Q^ := C;
     Inc(P);
     Dec(Q);
   end;
 end;

Похоже, вы предоставили четыре различных функции Delphi для обратного порядка строки. Вот краткое описание каждой функции и ее реализации:

Функция ReverseString1 Эта функция принимает строку в качестве входных данных, рассчитывает длину строки и затем iterates over строку в обратном порядке, чтобы построить отображенную строку.

function ReverseString1(const s: string): string;
var
  i, len: Integer;
begin
  len := Length(s);
  SetLength(Result, len);
  for i := len downto 1 do
  begin
    Result[len - i + 1] := s[i];
  end;
end;

Функция ReverseString2 Эта функция также принимает строку в качестве входных данных и iterates over строку в обратном порядке, чтобы построить отображенную строку. Однако, она только обрабатывает строки с двумя или более символами.

function ReverseString2(const Str: string): string;
var
  ch: Char;
  i, Size: Integer;
begin
  Result := Str;
  Size := Length(Result);
  if (Size >= 2) then
  begin
    for i := 1 to (Size div 2) do
    begin
      ch := Result[i];
      Result[i] := Result[Size - (i - 1)];
      Result[Size - (i - 1)] := ch;
    end
  end;
end;

Функция ReverseString3 Эта функция принимает строку в качестве входных данных и использует указатели для обратного порядка строки в месте.

function ReverseString3(S: string): string;
var
  P, Q: PChar;
  C: Char;
begin
  Result := S;
  if Length(Result) = 0 then Exit;
  P := PChar(Result);
  Q := P + Length(Result) - 1;
  while P < Q do
  begin
    C := P^;
    P^ := Q^;
    Q^ := C;
    Inc(P);
    Dec(Q);
  end;
end;

Процедура ReverseString4 Эта процедура похожа на функцию ReverseString3, но она модифицирует входную строку вместо возвращения новой отображенной строки.

Обратите внимание, что эти функции имеют некоторые ограничения. Например, они могут не обрабатывать корректно строковые символы Unicode и могут не работать правильно с строками, содержащими null-символы. В реальном приложении вы бы, вероятно, хотели использовать более robust и гибкий метод для обратного порядка строк.

Вот пример тестирования этих функций:

procedure Main;
var
  s: string;
begin
  s := 'Hello, World!';

  WriteLn('Original string:', s);

  WriteLn('Reversed string 1:', ReverseString1(s));
  WriteLn('Reversed string 2:', ReverseString2(s));
  WriteLn('Reversed string 3:', ReverseString3(s));
end.

В процедуре Main вы можете тестировать каждую из этих функций, вызывая их с образцом входной строки.

В статье приведены четыре функции на языке Delphi, которые реализуют алгоритм обратного порядка символов в строке.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-08 17:28:37/0.0039548873901367/0