Combine Strrep in one Line.
2 次查看(过去 30 天)
显示 更早的评论
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');
0 个评论
采纳的回答
KL
2017-11-30
use replace with cell arrays,
a = 'abcxyz'
old = {'x';'z'};
new = {'y';'w'};
a = replace(a, old,new)
3 个评论
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);
更多回答(1 个)
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 String Parsing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!