Combine Strrep in one Line.
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
FishermanJack
am 30 Nov. 2017
Kommentiert: FishermanJack
am 4 Dez. 2017
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 Kommentare
Akzeptierte Antwort
KL
am 30 Nov. 2017
use replace with cell arrays,
a = 'abcxyz'
old = {'x';'z'};
new = {'y';'w'};
a = replace(a, old,new)
3 Kommentare
KL
am 30 Nov. 2017
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);
Weitere Antworten (1)
Jan
am 30 Nov. 2017
Bearbeitet: Jan
am 30 Nov. 2017
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 Kommentare
Siehe auch
Kategorien
Mehr zu String Parsing finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!