replace spaces in a string

160 ビュー (過去 30 日間)
Mitul Dattani
Mitul Dattani 2018 年 1 月 8 日
コメント済み: nagendra badiger 2020 年 7 月 22 日
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, ' +', ' ');
  1 件のコメント
nagendra badiger
nagendra badiger 2020 年 7 月 22 日
Really elegant solution

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by