Reversing parts of (even) items in a listbox (cellarray)
Mostrar comentarios más antiguos
Hello, I have items in a listbox (so cell array) - the integers before the "r" can be any number from 1-12.

My aim is to take any line containing an even number after r (r2, r4 etc) and reverse the other numbers and then put back into the list box
So line 2 & 4 would change to
1 2 3 r2 -> 3 2 1 r2
1 2 3 r4 -> 3 2 1 r4
This was my attempt.
items=app.ListBoxPos.Items
nl=numel(items);
rstr=["r2","r4","r6","r8"];
s1=[];
out={};
for i=1:nl
line=char(items(i));
if contains(line, rstr)
tokens = strsplit(line, 'r' )
t=fliplr(tokens{1,1})
new=[t,' r',tokens{1,2}]
app.ListBoxPos.Items{i}=new
%Not sure what to do now!
end
end
Not sure if this is the most elegant way, and it falls over trying to overwrite the line in the listbox.
Thanks for any help
Jason
Respuesta aceptada
Más respuestas (1)
1 comentario
Cris LaPierre
el 19 de En. de 2021
When the number at the end is 2 characters, it would require a different approach. Perhaps finding the 'r' and using that to set the index rather the 'end'.
Categorías
Más información sobre Interactive Control and Callbacks en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
