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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2009, 10:25   #1
Impario
Пользователь
 
Аватар для Impario
 
Регистрация: 27.12.2008
Сообщений: 31
Печаль Задача со стрингом на удаление пробела

условие во вложениях!!!
Вообщем я незнаю как пробелы удалить???Кто может подсобите!!!
Изображения
Тип файла: jpg 268t.jpg (37.0 Кб, 138 просмотров)
Impario вне форума Ответить с цитированием
Старый 04.01.2009, 12:06   #2
pascal65536
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 42
По умолчанию

Код:
Var S : String;
    I : Integer;

Begin
     S := '   bla bla   bla ';
     While pos('  ', S)>0 Do
     Begin
          delete(S, pos('  ',S), 2);
     End;
     
     If S[1] = ' ' Then delete(S, 1, 1);
     If S[Length(S)] = ' ' Then delete(S, Length(S), 1);
     WriteLn('-=',S,'=-');
End.
pascal65536 вне форума Ответить с цитированием
Старый 04.01.2009, 14:35   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Вариант №2(нормально реагирует на любое колличество пробелов между словами, а не только на не чётное):
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var S : String;
    I : Integer;
    B :boolean;
begin
 S := Edit1.Text;
 S := Trim(S);
  For I:=Length(S) DownTo 1 Do
  begin
   If (s[i]=' ')And(S[i-1]=' ') then
   Delete(S, I-1, 1);
  end;
 Edit2.Text := S;
end;
Alter вне форума Ответить с цитированием
Старый 04.01.2009, 14:44   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

раз уж пошла такая пьянка, вот еще вариант:
Код:
str := StringReplace(str, ' ', '', [rfReplaceAll]);
_Engine_ вне форума Ответить с цитированием
Старый 04.01.2009, 14:55   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

pascal65536, отлично.
Только одна неприятная ошибка в программе - двойные (или кратные двум) пробелы внутри строки будут совсем удалены ('bla bla' - превратится в 'blabla'):
Код:
     While pos('  ', S)>0 Do
     Begin
          delete(S, pos('  ',S), 2);
     End;
а нужно так:
Код:
     While pos('  ', S)>0 Do
          delete(S, pos('  ',S), 1);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 14:58   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alter и _Engine_ - просто малюсенькое уточнение - мы не знаем, на чём требуется написать программу, но Ваши варианты будут работать только под Delphi (а под Pascal их надо переделывать!)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 18:18   #7
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

А я вообще думал, что нужно сделать на Си/С++ ЛОЛ :D
StarWorm вне форума Ответить с цитированием
Старый 04.01.2009, 18:24   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от StarWorm
А я вообще думал, что нужно сделать на Си/С++
Абсолютно не исключено! Если это будет так - все вместе поржём! *LOL* :-D
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2009, 18:30   #9
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Alter и _Engine_ - просто малюсенькое уточнение - мы не знаем, на чём требуется написать программу, но Ваши варианты будут работать только под Delphi (а под Pascal их надо переделывать!)...
В теме не указано на чём надо.
У меня особо переделывать не надо, только Edit заменить на переменную и всё.

Функция Trim:
Код:
function Trim(const S: string): string;
var
  I, L: Integer;
begin
  L := Length(S);
  I := 1;
  while (I <= L) and (S[I] <= ' ') do Inc(I);
  if I > L then Trim := '' else
  begin
    while S[L] <= ' ' do Dec(L);
    Trim := Copy(S, I, L - I + 1);
  end;
end;
Alter вне форума Ответить с цитированием
Старый 04.01.2009, 20:03   #10
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Цитата:
В теме не указано на чём надо.
У меня особо переделывать не надо, только Edit заменить на переменную и всё.

Функция Trim:
Хотел бы я посмотреть, как в Си++/Си пойдет твоя замена Edit на переменную Это просто каюк В Си и делфи разные алгоритмы работы со строками...
StarWorm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ликвидирование пробела в Memo Sanek777 Общие вопросы Delphi 2 08.10.2008 15:51
Удаление компонентов SanekIrk Общие вопросы Delphi 8 16.08.2008 09:26
Удаление файлов Amery Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.05.2008 14:46
Удаление файла Македонский Общие вопросы Delphi 5 06.09.2007 11:46