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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2007, 12:54   #1
MASIK
Новичок
Джуниор
 
Регистрация: 31.10.2007
Сообщений: 1
Восклицание удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi

Мне нужно удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу. Скжите пожалуйста как ето зделать.
MASIK вне форума Ответить с цитированием
Старый 31.10.2007, 13:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Какой язык?

Например так, если в Делфи.

Код:
var e:TStringList;k:integer;
begin
s:='qwqw   qwe qeqw eqwe   qeqwe';
e:=TStringList.Create;
e.Delimiter:=' ';
e.DelimitedText:=s;s:='';
for k:=0 to e.Count-1 do if e[k]<>'' then s:=s+' '+e[k];

caption:=s;

end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2007, 13:21   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

процедура замены

Код:
procedure search(S,S1:string);
var str:string;
    i,index:integer;
begin
for i:=0 to Form1.RichEdit1.Lines.Count-1 do //Count-1 - обрати внимание!!!
 begin
 str:=Form1.RichEdit1.Lines.Strings[i];
 while pos(S,str)<>0 do
  begin
  index:=pos(S,str);
  delete(str,index,length(S));
  insert(S1,str,index);
  end;
 Form1.RichEdit1.Lines.Strings[i]:=str;
 end;
end;
Удаление лишних знаков

Код:
search (' :',':');
search (':','@f@ ');
search ('  ',' ');
search ('@f@',':');
Alar вне форума Ответить с цитированием
Старый 01.11.2007, 21:34   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

DimaG, возможно стоит запостить подобные вопрос в раздел C++?
Alar вне форума Ответить с цитированием
Старый 02.11.2007, 09:12   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Как вариант:
Искать двойной пробел Pos(s,' ') а потом заменять его на одинарный. И делать это до тех пор, пока в строке не останется 2-х пробелов подряд.
zetrix вне форума Ответить с цитированием
Старый 02.11.2007, 09:13   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

тогда уж stringreplace
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 02.11.2007, 10:35   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот пример из учебника по Паскалю. Проверял, работает, только выход заедает.
Дана строка, в которой слова разделены произвольным количеством пробелов.
Удалить все лишние пробелы, кроме одного.
Вывести исходную строку и результат обработки.
Код:
          var    s:string[80];
               i,k:integer;
                ch:char;
                 b:boolean;
                     begin
                          writeln('Работает программа- пример на использование строк');
                             repeat
                                writeln('Введите исходную строку');
                                readln(s);
                                writeln('Исходная строка = ',s);
                                k:=length(s);{Определяем длину введенной строки}
                                i:=1;
                                  while (i<=k-1) do
                                       begin
                                          if s[i]=' ' then
                                             begin
                                                 repeat
                                                    if s[i+1]=' ' then
                                                       begin
                                                           delete(s,i,1);
                                                            k:=k-1;
                                                             b:=false;
                                                       end
                                                           else b:=true;
                                                  until b;
                                             end;
                                          i:=i+1;
                                      end; 
                                  writeln('Результат преобразования = ',s);
                                  writeln('Будете еще преобразовывать строки? ');
                                 readln(ch);
                            until ch='n'; не работает
        end.
]

Последний раз редактировалось puporev; 02.11.2007 в 10:38.
puporev вне форума Ответить с цитированием
Старый 22.12.2010, 18:23   #8
gettingup
 
Регистрация: 12.12.2010
Сообщений: 4
По умолчанию

спасибо огромное разобрался
gettingup вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать прогу чтобы показывать сколько дней осталось до... Bigtyoma Общие вопросы Delphi 20 23.12.2016 06:23
Как сделать так, чтобы переключение между окнами было автоматическим? barand Свободное общение 9 07.07.2008 23:54
Помогите решить. Паскаль. Работа со строками. Удалить лишние пробелы. Комильфо Помощь студентам 3 10.11.2007 21:42
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ DimaG Общие вопросы C/C++ 1 01.11.2007 21:50
Надо в RichEdit Удалить все строки между двумя пустыми Stas))) Компоненты Delphi 7 28.05.2007 16:49