Combine Strrep in one Line.

조회 수: 3 (최근 30일)
FishermanJack
FishermanJack 2017년 11월 30일
댓글: FishermanJack 2017년 12월 4일
Hi, is there any way that i Combine strrep as one line in my Code for different values. for example.
a = strrep(a, 'x','y'); a = strrep(a, 'z','w');

채택된 답변

KL
KL 2017년 11월 30일
use replace with cell arrays,
a = 'abcxyz'
old = {'x';'z'};
new = {'y';'w'};
a = replace(a, old,new)
  댓글 수: 3
KL
KL 2017년 11월 30일
sorry, that does not work for me
What does it mean? Do you get an error message?
My guess would be that you're using a matlab version older than 2016b. Anywayt try regexprep,
a = regexprep(a, old,new);
FishermanJack
FishermanJack 2017년 11월 30일
편집: FishermanJack 2017년 11월 30일
yes, thanks,regexprep does the Job very well. :D

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jan
Jan 2017년 11월 30일
편집: Jan 2017년 11월 30일
has = 'xy';
rep = 'zw';
[Lia, Locb] = ismember(a, has);
a(Lia) = rep(Locb);
[EDITED] I assume strrep has less overhead. For many changes, a lookup table will be more efficient:
function s = StrRepList(s, old, new)
if numel(old) < 20 % GUESSED limit!
for k = 1:numel(old)
s = strrep(s, old(k), new(k));
end
else
lut = char(0):char(255);
lut(old + 1) = new;
s = lut(s + 1);
end
end
Some tests with tic/toc will help to find a suitable limit to decide for a strrep loop or a lookup table method. Maybe it depends on the size of s also.
  댓글 수: 2
FishermanJack
FishermanJack 2017년 11월 30일
i will try this because regexprep is much slower than strrep..
FishermanJack
FishermanJack 2017년 12월 4일
i implented this in my Code, but as i see with tic/toc the most efficient way is with strrep. thank you anyway

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by