Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/28: Рейтинг темы: голосов - 28, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 39
1

В тексте убрать лишние пробелы между словами, оставив по одному

09.12.2012, 21:42. Просмотров 5750. Ответов 12
Метки нет (Все метки)


Составить программу обработки строк. Текст помещать в Memo. В тексте убрать лишние пробелы между словами, оставив по одному.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2012, 21:42
Ответы с готовыми решениями:

В тексте убрать лишние пробелы между словами, оставив по одному
1. В тексте убрать лишние пробелы между словами, оставив по одному.

Удалить лишние пробелы, оставив только по одному между словами.
Дан текст, состоящий из N строк. Слова разделены несколькими пробелами. Требуется удалить лишние...

Удалить все лишние пробелы, оставив по одному между словами
Задание "Написать программу, в которой вводится строка из слов с некоторым количеством пробелов...

Удалить из файла лишние пробелы, оставив по одному между словами
Добрый день. Помогите с программой. Заранее спасибо. Дан файл, содержащий некоторый текст....

12
156 / 299 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
09.12.2012, 21:44 2
Подробнее... !!!
0
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 39
09.12.2012, 21:55  [ТС] 3
ну вот начало есть. только не знаю как сделать чтобы в тексте убрать лишние пробелы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function proc_with_str(const astr : string) : string;
var sp,i,k:integer;
s: string;
 
 
begin
 
result := astr;
 
sp :=0;
 
for k := 1 to length(result) do
for i := 1 to length(result) do
begin
if ((result[i] = ' ') and (result[i+1] = ' ')) then
begin
inc(sp);
end;
delete(result,i,sp);
sp := 0;
end;
 
end;
 
 
end.
0
Миниатюры
В тексте убрать лишние пробелы между словами, оставив по одному  
Пишу на Delphi...иногда
1418 / 1275 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
09.12.2012, 21:58 4
Цитата Сообщение от Регина93 Посмотреть сообщение
ну вот начало есть. только не знаю как сделать чтобы в тексте убрать лишние пробелы
картинки не вижу, а какой признак того, что пробел лишний?
0
156 / 299 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
09.12.2012, 22:06 5
Цитата Сообщение от cotseec Посмотреть сообщение
картинки не вижу, а какой признак того, что пробел лишний?
Чтобы убрать пробелы надо составить функцию:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ProbelTerminator(Text: String): String;
var
b: String; //выходной текст
i: integer; //счетчик для цыкла
begin
if Text='' then exit; //проверяемся
for i:=1 To Length(Text) Do 
begin
if Text[i]=' ' then  //если пробел то 
continue //продолжаем цыкл
else
b:=b + Text[i]; //иначе пишим переменую
end;
Result:=b;
ShowMessage('Готово! Пробелов нет');
end;
1
Пишу на Delphi...иногда
1418 / 1275 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
09.12.2012, 22:11 6
т.е. просто удалить пробелы?
тогда православный Stringreplace выручит
Delphi
1
StringReplace(Text,' ' ,'',[rfReplaceAll, rfIgnoreCase]);
Tехт - то, откуда надо удалить пробелы
0
156 / 299 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
09.12.2012, 22:18 7
Цитата Сообщение от cotseec Посмотреть сообщение
т.е. просто удалить пробелы?
тогда православный Stringreplace выручит
Delphi
1
StringReplace(Text,' ' ,'',[rfReplaceAll, rfIgnoreCase]);
Tехт - то, откуда надо удалить пробелы
моя функция легче.
0
2474 / 1850 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
09.12.2012, 22:22 8
Цитата Сообщение от cotseec Посмотреть сообщение
т.е. просто удалить пробелы?...
Не пойдёт

...В тексте убрать лишние пробелы между словами, оставив по одному.
0
Пишу на Delphi...иногда
1418 / 1275 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
09.12.2012, 22:27 9
Цитата Сообщение от cotseec Посмотреть сообщение
картинки не вижу, а какой признак того, что пробел лишний?
процитирую сам себя, а показаный пример удаляет как раз все пробелы
0
2474 / 1850 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
09.12.2012, 22:32 10
Вот именно, все. А нужно только лишние.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30867 / 20189 / 7874
Регистрация: 22.10.2011
Сообщений: 35,049
Записей в блоге: 6
10.12.2012, 00:48 11
Цитата Сообщение от саша40 Посмотреть сообщение
Чтобы убрать пробелы надо правильно составить функцию:
Fixed. Твоя функция написана неправильно. Исправляй.

Цитата Сообщение от angstrom Посмотреть сообщение
А нужно только лишние.
Delphi
1
2
3
4
5
6
procedure TForm1.Button1Click(Sender: TObject);
begin
   repeat
      Memo1.Text := StringReplace(Memo1.Text, '  ' ,' ',[rfReplaceAll]);
   until Pos('  ', Memo1.Text) = 0;
end;
1
13064 / 5850 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
10.12.2012, 04:39 12
Ещё способ. Удаление лишних пробелов (и табуляций):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Удаление лишних пробелов и табуляций.
procedure TForm1.Button1Click(Sender: TObject);
const
  D = [' ', #9, #10, #13];
var
  S : String;
  i, Len : Integer;
begin
  //Исходный текст.
  S := Memo1.Text;
 
  Len := Length(S);
  i := Len;
  while i >= 1 do begin
    if S[i] in [' ', #9] then
      if ( (i = Len) or (S[i + 1] in D) ) or ( (i = 1) or (S[i - 1] in D) ) then begin
        Delete(S, i, 1);
        Dec(Len);
      end;
    Dec(i);
  end;
  
  //Ответ.
  Memo2.Text := S;
end;
0
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 39
10.12.2012, 17:28  [ТС] 13
Спасибо всем!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2012, 17:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Удалить в строке лишние пробелы, оставив между словами ровно по одному
Дана строка состоящая из слов, между которыми есть некое количество пробелов. Требуется удалить...

Удалить в тексте лишние пробелы, оставив между словами не больше двух пробелов
Есть строка str1 (в строке предложение и между словами может быть от 0 до n пробелов). Как сделать...

Убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между предложениями по два.
Мое задание: убрать в текстовом файле ненужные пробелы, оставив между словами по одному, между...

В тексте убрать лишние пробелы между словами
Помогите пожалуйста решить задачу. В тексте убрать лишние пробелы между словами .


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.