Replacing One Character Issue

picture = '% % %'
picture = strrep(picture,picture(1),'$')
I want to replace the 1st character with a $, but it replaces all the characters with a $. I think this is because all the characters are identical. How can I fix this without changing much of the program ?

Answers (1)

Voss
Voss on 3 Mar 2023
Edited: Voss on 3 Mar 2023
"I want to replace the 1st character with a $"
picture = '% % %';
disp(picture)
% % %
picture(1) = '$';
disp(picture)
$ % %
Note that that replaces the first character of picture with "$" regardless of what that character was (i.e., it does not replace the first character that's "%").
picture = 'c% % %';
disp(picture)
c% % %
picture(1) = '$';
disp(picture)
$% % %

5 Comments

If you actually want to replace the first character that's "%" with "$", then:
picture = '% % %';
disp(picture)
% % %
idx = find(picture == '%', 1);
if ~isempty(idx)
picture(idx) = '$';
end
disp(picture)
$ % %
picture = 'c% % %';
disp(picture)
c% % %
idx = find(picture == '%', 1);
if ~isempty(idx)
picture(idx) = '$';
end
disp(picture)
c$ % %
Thanks for your help. I don't understand the difference between the 2. Is it that the 1st is more efficient since it replaces whatever the 1st character is with a $ ?
Also, does disp(picture) convert picture from a string into an array ? If so, can I do this keeping it as a string ?
Actually, disp is just an alternative to fprint isn't it ?
The difference is that one replaces the first character and one replaces the first '%'.
disp does no conversion.
disp displays to the command line, yes.

Sign in to comment.

Asked:

on 3 Mar 2023

Commented:

on 3 Mar 2023

Community Treasure Hunt

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

Start Hunting!