Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2011, 16:46   #1
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию Работа с строкой.

Код:
Edit7.text:='Андрей';
Необходимо из Андрей сделать A*****.
Тоесть показать первую букву, а все остальные заменить на звездочки.
Насколько я понимаю можно воспользоваться StringReplace но как не трогать первую букву в таком случае?
celovec вне форума Ответить с цитированием
Старый 18.03.2011, 16:52   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
s:=edit1.text;
for i:=2 to length(s) do
s[i]:='*';
edit1.text:=s;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 18.03.2011, 16:53   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function DoIt(s:string):string;
var i:integer;
begin
 Result:=s;
 for i:=2 to Length(Result) do Result[i]:='*';
end;
вот проблема то...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.03.2011, 18:13   #4
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Спасибо.
А если необходимо через одну, тоесть "А*д***"
Код намного увеличится?
celovec вне форума Ответить с цитированием
Старый 18.03.2011, 18:24   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Конечно намного
Код:
function DoIt(s: string): string;
var i: integer;
  s1: string;
begin
  s1 := '';
  for i := 1 to Length(s) do
    if i mod 2 <> 0 then
      s1 := s1 + s[i]
    else
      s1 := s1 + '*';
  Result := s1;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.03.2011, 18:34   #6
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Еще раз спасибо. Вы очень помогли мне.
celovec вне форума Ответить с цитированием
Старый 18.03.2011, 18:38   #7
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Вот универсальный алгоритм для тебя:
Код:
function GetReplace(Str: string; Arr: array of Boolean): string;
var
  I: Integer;
begin
  Result := Str;

  for I := 1 to Length(Arr)  do
  begin
    if Arr[I - 1] then
      Result[I] := '*';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetReplace('Андрей', [True, False, True, True, False]));
end;
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 06.04.2011, 16:14   #8
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Воспользовался вариантом от
_SERGEYX_

Код:
function DoIt(s: string): string;
var i: integer;
  s1: string;
begin
  s1 := '';
  for i := 1 to Length(s) do
    if i mod 2 <> 0 then
      s1 := s1 + s[i]
    else
      s1 := s1 + '*';
  Result := s1;
end;
Подскажите как не учитывать проблемы, пробел не должен заменятся на *
Пример: "Андрей Зимовский"
celovec вне форума Ответить с цитированием
Старый 06.04.2011, 16:17   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function DoIt(s: string): string;
var i: integer;
  s1: string;
begin
  s1 := '';
  for i := 1 to Length(s) do
    if (i mod 2 <> 0)or(s[i]=' ') then
      s1 := s1 + s[i]
    else
      s1 := s1 + '*';
  Result := s1;
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строкой. anamnesis Помощь студентам 5 19.12.2010 18:16
работа со строкой mansp Общие вопросы C/C++ 1 15.11.2010 23:19
работа со строкой Андрей.12 Помощь студентам 1 15.02.2010 09:14
Работа со строкой!!! APTEMUC Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 18.01.2010 00:22
работа со строкой. D_E_N Общие вопросы Delphi 4 25.10.2009 16:19