Azzera filtri
Azzera filtri

replace spaces in a string

188 visualizzazioni (ultimi 30 giorni)
Mitul Dattani
Mitul Dattani il 8 Gen 2018
Commentato: nagendra badiger il 22 Lug 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

Risposta accettata

Walter Roberson
Walter Roberson il 8 Gen 2018
str = regexprep(str, ' +', ' ');

Più risposte (2)

Image Analyst
Image Analyst il 8 Gen 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 Commenti
Mitul Dattani
Mitul Dattani il 8 Gen 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 il 8 Gen 2018
Did you try it? It works with any number of spaces.
However, Walter's answer looks like the best answer to me.

Accedi per commentare.


Jan
Jan il 8 Gen 2018
Modificato: Jan il 8 Gen 2018
s = 'a a a a b bcd a ';
[B, N] = RunLength(s);
N(B == ' ') = 1;
s = RunLength(B, N);

Community Treasure Hunt

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

Start Hunting!

Translated by