Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналог функции str_pad? 
V
    Опции темы
knyshow
Дата 16.2.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 6.2.2010

Репутация: нет
Всего: 2



Цитата

string str_pad (string input, int pad_length [, string pad_string [, int pad_type]])
Эта функция возвращает строку input, дополненную слева, справа или с обоих сторон до заданной аргументом pad_length длины строкой pad_string. По умолчанию pad_string содержит пробел.
Необязательный аргумент pad_type может иметь значение STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, по умолчанию STR_PAD_RIGHT/ 
Если pad_length меньше длины строки input, строка возвращается без изменений. 


Код

<?php 
$input = "Alien"; 
echo str_pad($input, 10);                      // выводит "Alien     " 
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // выводит "-=-=-Alien" 
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // выводит "__Alien___" 
echo str_pad($input, 6 , "___");               // выводит "Alien_" 
?>


Ребят, аналогичная функция в Delphi ну просто обязана быть, но не найду :(
Ткните носом плиз.
Или все-таки самому писать? :(
PM MAIL   Вверх
Rennigth
Дата 16.2.2010, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(knyshow @  16.2.2010,  14:50 Найти цитируемый пост)
Или все-таки самому писать? :( 

 smile 
Delphi и php все-таки разные вещи )))
Сейчас если никто не отвлечет накатаю.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Qu1nt
Дата 16.2.2010, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 22
Всего: 50



Вот, запилил smile
Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, StrUtils, Math;

type
  TPadType = (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH);

function StrPad(const Text: String; Count: Integer; const Pad: String = ' ';
  Mode: TPadType = STR_PAD_RIGHT): String;
begin
  Dec(Count, Length(Text));
  Result := LeftStr(DupeString(Pad, Count), Count);
  case Mode of
    STR_PAD_LEFT  : Result := Result + Text;
    STR_PAD_RIGHT : Result := Text + Result;
    STR_PAD_BOTH  : Result := LeftStr(Result, Length(Result) div 2) + Text +
      LeftStr(Result, Ceil(Length(Result) / 2));
  end;
end;

procedure Echo(const Text: String);
begin
  WriteLn(Format('"%s"', [Text]));
end;

var
  Input: String = 'Alien';

begin
  Echo(StrPad(Input, 10));
  Echo(StrPad(Input, 10, '-=', STR_PAD_LEFT));
  Echo(StrPad(Input, 10, '_', STR_PAD_BOTH));
  Echo(StrPad(Input, 6, '___'));
  ReadLn;
end.


Это сообщение отредактировал(а) Qu1nt - 16.2.2010, 23:13
PM MAIL   Вверх
Rennigth
Дата 16.2.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Код

type
  TPadType = (STR_PAD_RIGHT, STR_PAD_LEFT, STR_PAD_BOTH);

function str_pad(const input_str: string; pad_length: Integer;
  const pad_str: string = ' '; pad_type: TPadType = STR_PAD_RIGHT): string;
var
  lrlLength, lrLength, llLength, lBothIndex: Integer;
  lpadstr, lrpadstr, llpadstr: string;
begin
  Result := '';

  if (Length(input_str) < Length(pad_str)) or (Length(pad_str) > pad_length) or
    (Length(input_str) > pad_length) then
    raise Exception.Create('error input params');

  lpadstr := '';
  llpadstr := '';
  lrpadstr := '';

  if (pad_type = STR_PAD_RIGHT) or (pad_type = STR_PAD_LEFT) then
  begin
    lrlLength := pad_length - Length(input_str);
    while lrlLength >= Length(lpadstr) do
      lpadstr := lpadstr + pad_str;
    lpadstr := Copy(lpadstr, 1, lrlLength);
  end;

  case pad_type of
    STR_PAD_RIGHT:
      Result := input_str + lpadstr;
    STR_PAD_LEFT:
      Result := lpadstr + input_str;
    STR_PAD_BOTH:
    begin
      lBothIndex := Trunc((pad_length - Length(input_str))/2);
      lrLength := lBothIndex;
      llLength :=  pad_length - lBothIndex - Length(input_str);
      while lrLength >= Length(lrpadstr) - Length(pad_str) do
        lrpadstr := lrpadstr + pad_str;
      while llLength >= Length(llpadstr) - Length(pad_str) do
        llpadstr := llpadstr + pad_str;

      llpadstr := Copy(llpadstr, 1, llLength);
      lrpadstr := Copy(lrpadstr, 1, lrLength);

      Result := lrpadstr + input_str + llpadstr;
    end;
  end;
end;

Вот что получилось...

Добавлено через 20 секунд
О, опоздал )))

Добавлено через 3 минуты и 11 секунд
хех, про DupeString забыл )))


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
knyshow
Дата 16.2.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 6.2.2010

Репутация: нет
Всего: 2



Цитата

Delphi и php все-таки разные вещи )))
но строковые функции они ведь строковые функции smile

Спасибо, ребят smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.