How to substitute numbers in a string with repeated strings?
조회 수: 3 (최근 30일)
이전 댓글 표시
I have many different strings with different numbers with this format:
str='A + 2 B -> D + 3 E';
I would like to replace the numbers with repeated strings so I can have
str='A + B + B -> D + E + E + E';
I did it with so many lines but it looks so ugly and I would like to ask you if you know a better way
Thanks
댓글 수: 1
채택된 답변
추가 답변 (2개)
KL
2017년 5월 8일
편집: KL
2017년 5월 8일
something like this?
str={'A + 2 B -> D + 3 E'};
old = {'2', '3'};
new = {'B +','E +'};
for i=1:numel(old)
str = strrep(str,old(i),new(i))
if you really want to use character array, a little tweak will do,
str=['A + 2 B -> D + 3 E'];
old = {'2', '3'};
new = {'B +','E +'};
for i=1:numel(old)
str = strrep(str,old{i},new{i})
end
end
As Stephen mentioned, regexprep makes it even more easier without a loop,
str=['A + 2 B -> D + 3 E']
old = {'2', '3'}
new = {'B +','E +'}
newStr = regexprep(str,old,new)
댓글 수: 4
Rik
2017년 5월 8일
My first thought is using repmat, but usually when my first thought is repmat, there is a better solution using sprintf. So someone might have a way faster and more elegant solution than this.
First use isstrprop to figure out the position of the digits ( ind=isstrprop(str,'digit'); ), then loop over the numbers ( for pos=length(find(ind)):-1:1 ) to replicate the correct part.
A more important question is your source. Can you prevent your source to output this format? That would make processing with Matlab less clunky and more clear cut.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!