replace spaces in a string

32 vues (au cours des 30 derniers jours)
Mitul Dattani
Mitul Dattani le 8 Jan 2018
Commenté : nagendra badiger le 22 Juil 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

Réponse acceptée

Walter Roberson
Walter Roberson le 8 Jan 2018
str = regexprep(str, ' +', ' ');
  1 commentaire
nagendra badiger
nagendra badiger le 22 Juil 2020
Really elegant solution

Connectez-vous pour commenter.

Plus de réponses (2)

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

Connectez-vous pour commenter.


Jan
Jan le 8 Jan 2018
Modifié(e) : Jan le 8 Jan 2018
s = 'a a a a b bcd a ';
[B, N] = RunLength(s);
N(B == ' ') = 1;
s = RunLength(B, N);

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by