replace spaces in a string

189 次查看(过去 30 天)
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

采纳的回答

Walter Roberson
Walter Roberson 2018-1-8
str = regexprep(str, ' +', ' ');

更多回答(2 个)

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

请先登录,再进行评论。


Jan
Jan 2018-1-8
编辑:Jan 2018-1-8
s = 'a a a a b bcd a ';
[B, N] = RunLength(s);
N(B == ' ') = 1;
s = RunLength(B, N);

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by