Borrar filtros
Borrar filtros

replace spaces in a string

189 visualizaciones (últimos 30 días)
Mitul Dattani
Mitul Dattani el 8 de En. de 2018
Comentada: nagendra badiger el 22 de Jul. de 2020
Im doing a practice question and I got the question:
Replace any occurrence of two or more consecutive blank spaces with one (single) blank space
I attempted it a bunch of ways but so far the code Ive got is:
str = input('Enter a string: ');
[m, n] = size(str);
C = 0;
for i=1:n
if str(i) == ' '
C = C+1;
blankpos(C) = i;
end
end
fprintf('Position of the blank spaces: \n');
blankpos
C1 = 0;
strm=str;
for i=1:n
if str == ' '
C1 = C1+1;
posreplace(C1)=i;
if str == ' '
C1 = C1+1;
posreplace(C1)=i;
end
end
end
strm(posreplace) = ' ';
fprintf('The modified string: ');
strm

Respuesta aceptada

Walter Roberson
Walter Roberson el 8 de En. de 2018
str = regexprep(str, ' +', ' ');

Más respuestas (2)

Image Analyst
Image Analyst el 8 de En. de 2018
One way is to use strrep():
s = 'a a a a' % Test string.
% Repeatedly loop replacing double spaces by single space
% until there are no double spaces left.
while contains(s, ' ')
s = strrep(s, ' ', ' ');
end
s % Display in command window.
  2 comentarios
Mitul Dattani
Mitul Dattani el 8 de En. de 2018
what if there are triple spaces thats hats tripping me up as in the question im given theres a triple space
Image Analyst
Image Analyst el 8 de En. de 2018
Did you try it? It works with any number of spaces.
However, Walter's answer looks like the best answer to me.

Iniciar sesión para comentar.


Jan
Jan el 8 de En. de 2018
Editada: Jan el 8 de En. de 2018
s = 'a a a a b bcd a ';
[B, N] = RunLength(s);
N(B == ' ') = 1;
s = RunLength(B, N);

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by