Borrar filtros
Borrar filtros

Combine Strrep in one Line.

2 visualizaciones (últimos 30 días)
FishermanJack
FishermanJack el 30 de Nov. de 2017
Comentada: FishermanJack el 4 de Dic. de 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');

Respuesta aceptada

KL
KL el 30 de Nov. de 2017
use replace with cell arrays,
a = 'abcxyz'
old = {'x';'z'};
new = {'y';'w'};
a = replace(a, old,new)
  3 comentarios
KL
KL el 30 de Nov. de 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);
FishermanJack
FishermanJack el 30 de Nov. de 2017
Editada: FishermanJack el 30 de Nov. de 2017
yes, thanks,regexprep does the Job very well. :D

Iniciar sesión para comentar.

Más respuestas (1)

Jan
Jan el 30 de Nov. de 2017
Editada: Jan el 30 de Nov. de 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 comentarios
FishermanJack
FishermanJack el 30 de Nov. de 2017
i will try this because regexprep is much slower than strrep..
FishermanJack
FishermanJack el 4 de Dic. de 2017
i implented this in my Code, but as i see with tic/toc the most efficient way is with strrep. thank you anyway

Iniciar sesión para comentar.

Categorías

Más información sobre String Parsing en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by