Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

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

Какой язык?

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

Код:

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;

Stilet вне форума   Ответить с цитированием
Старый 31.10.2007, 14:21   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Адрес: Химки
Сообщений: 13,514
Репутация: 2719
По умолчанию

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

Код:

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, 22:34   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Адрес: Химки
Сообщений: 13,514
Репутация: 2719
По умолчанию

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

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

icq: 637233
По умолчанию

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

Вот пример из учебника по Паскалю. Проверял, работает, только выход заедает.
Дана строка, в которой слова разделены произвольным количеством пробелов.
Удалить все лишние пробелы, кроме одного.
Вывести исходную строку и результат обработки.
Код:

          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 в 11:38.
puporev вне форума   Ответить с цитированием
Старый 22.12.2010, 19:23   #8
gettingup
Новичок
 
Регистрация: 12.12.2010
Сообщений: 4
Репутация: 10
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


11:11.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru