Написать программу которая удаляет все пробелы

Напишите программу, чтобы на месте удалить все лишние пробелы из строки. Между словами строки могут быть начальные пробелы, конечные пробелы или последовательные пробелы. Решение должно удалить их, а также обработать знаки препинания.

Идея состоит в том, чтобы перебирать символы строки и проверять, является ли текущий символ пробелом, не пробелом или знаком препинания. Если это знак препинания, любой предшествующий пробел, если он есть, удаляется. Если это пробел, удалите его, если только он не находится сразу после слова или знака препинания.

Ниже приведена его реализация на C и C++. Решение отслеживает следующую пустую позицию в выходной строке для упрощения алгоритма и обрабатывает начальные и конечные пробелы отдельно.

Источник: www.techiedelight.com

Удаление лишних пробелов

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

Чтобы удалить все пробелы в начале строки, надо проверять первый символ, не является ли он пробелом, до тех пор, пока он им являться не будет. Если первый символ пробел, то его следует удалять.

Уроки C++ / #10 урок — Строки и символы

Для удаления пробелов в конце используется примерно тот же алгоритм, что и для удаления в начале. Однако надо уменьшать на 1 индекс последнего элемента, если пробел был удален, или постоянно измерять длину строки (значение длины либо совпадает с последним индексом, либо меньше на 1).

Для удаления лишних пробелов внутри строки, надо, посимвольно перебирая строку, проверять, если очередной символ пробел, то не пробел ли следующий за ним. Если это так, то надо взять строку от начала до текущего (пробельного) символа включительно и присоединить к этой части часть строки, начинающуюся после второго пробела и до конца. При этом не надо увеличивать индекс элементов (т.к. может оказаться, что после удаленного пробела есть еще пробелы). Если же очередной символ не пробел или пробел, но после него идет не пробел, то надо перейти к следующему символу строки.

Читайте также:
Как сделать чтобы мышка двигалась постоянно без программ

Pascal


удалить пробелы в строке паскаль

var
str: string;
i: byte;
begin
readln(str);
i := 1;
while str[i] = ‘ ‘ do
delete(str,i,1);
while str[length(str)] = ‘ ‘ do
delete(str, length(str), 1);
i := 2;
while i < length(str) do
if (str[i] = ‘ ‘) and (str[i+1] = ‘ ‘) then
str := copy(str,1,i) + copy(str,i+2,length(str))
else
i := i + 1;
writeln(str);
end.

drink who I mark ten one dump
drink who I mark ten one dump

Python

python удалить пробелы

s = input()
i = 0
while s[i] == ‘ ‘:

9 Cтроки и операции над ними Python


s = s[1:]
while s[len(s)-1] == ‘ ‘:
s = s[:-1]
i = 1
while i < len(s)-1:
if s[i] == ‘ ‘ and s[i+1] == ‘ ‘:
s = s[:i+1] + s[i+2:]
else:
i += 1
print(s)

ты что делаешь сейч
ты что делаешь сейч

В Python есть целый ряд строковых функций, позволяющих решить данную задаче проще: split(), join(), strip(), replace(), count().

КуМир

алг удаление пробелов
нач
лит s
цел i
ввод s
i := 1
нц пока s[i] = » »
s := s[2:длин(s)]
кц
нц пока s[длин(s)] = » »
s := s[1:длин(s)-1]
кц
i := 2
нц пока i < длин(s)
если s[i] = » » и s[i+1] = » » то
s := s[1:i] + s[i+2:длин(s)]
иначе
i := i + 1
все
кц
вывод s
кон

кто где когда и почему
кто где когда и почему

Basic-256

input s$
i = 1
while mid(s$,1,1) = » »
s$ = right(s$,length(s$)-1)
end while

while mid(s$,length(s$),1) = » »
s$ = left(s$,length(s$)-1)
end while

i = 2
while i < length(s$)
if mid(s$,i,1) = » » and mid(s$,i+1,1) = » » then
s$ = left(s$,i) + right(s$,length(s$)-i-1)
else
i = i + 1
endif
end while
print s$

where is ball
where is ball

Источник: gospodaretsva.com

Как удалить все пробелы из строки в Python?

Нагуглил функцию strip() , но она удаляет только первый и последний пробел, а мне нужно все. Например, если a = ‘ sd dfsdf dfsfs’ , то нужно получить a = ‘sddfsdfdfsfs’ . Есть ли такая функция или надо через цикл как-то делать?

Читайте также:
Описание программ хлебопечки редмонд

Отслеживать
6,333 4 4 золотых знака 25 25 серебряных знаков 53 53 бронзовых знака
задан 8 сен 2014 в 15:19
177 2 2 золотых знака 5 5 серебряных знаков 12 12 бронзовых знаков

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

a.replace(‘ ‘, »)
Отслеживать
ответ дан 8 сен 2014 в 15:20
4,646 16 16 серебряных знаков 15 15 бронзовых знаков
Спасибо, сейчас попробую.
8 сен 2014 в 15:21

strip() может удалить не только пробел, но и табы и другие символы, которые считаются пробелом, включая Юникодные пробелы, если strip() вызван для Юникодной строки:

>>> import string >>> string.whitespace ‘tnx0bx0cr ‘ >>> string.whitespace.strip() » >>> import sys >>> s = ».join(unichr(i) for i in xrange(sys.maxunicode) if unichr(i).isspace()) >>> s[:15] u’tnx0bx0crx1cx1dx1ex1f x85xa0u1680u180eu2000’ >>> s.strip() u»

Поэтому аналог strip() , который удаляет пробел во всей строке: s = ».join(s.split()) .

Или, тоже самое, используя регулярные выражения: s = re.sub(r’s+’, », s, flags=re.UNICODE) .

Или, в коде, где важна производительность, bytes.translate() может быть использован, чтобы удалить все стандартные ( string.whitespace в С локале) пробелы из ascii строки:

>>> b’atbnc’.translate(None, b’tnvfr ‘) ‘abc’

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru