Using a loop to replace spaces for underscore

Hello there, I am a complete begginer in Matlab and was given an exercise that took me a whole day and still, no success.
The following function puts a '\' in front of every underscore. I have to change this function in a way that it replaces every space for an underscore.
locs = strfind(instring, '_'); % finding all underscores
if isempty(locs)
outstring = instring;
else
outstring_start_ind = 1;
instring_start_ind = 1;
for underscore_cnt = 1:length(locs) % for each underscores
outstring(outstring_start_ind:(locs(underscore_cnt)+underscore_cnt-2)) = ...
instring(instring_start_ind:(locs(underscore_cnt)-1));
outstring(locs(underscore_cnt)+underscore_cnt-1) = '\';
outstring_start_ind = locs(underscore_cnt)+underscore_cnt;
instring_start_ind = locs(underscore_cnt);
end
outstring(outstring_start_ind:(length(instring)+underscore_cnt)) = ...
instring(instring_start_ind:end);
end
Is there someone who can give me a hand here, please? Thank you.

6 Kommentare

Jonas
Jonas am 12 Jun. 2021
Bearbeitet: Jonas am 12 Jun. 2021
do you have to use the basic structure of the given function? if not, just use the strrep() function which replaces a specific character array by another
Laura Mendes
Laura Mendes am 12 Jun. 2021
ok, thank you very much. could you show me how would I use it ?
if you want to replace every space with an underscore you could call
strOut=strrep(strIn,' ','_');
Laura Mendes
Laura Mendes am 12 Jun. 2021
Ok, thank you. But actually I should use the basic structure of the function I posted. Do you have ideas? Thank you
Laura Mendes
Laura Mendes am 12 Jun. 2021
I tried this function within the main code where I use the posted function, and it did not work... :/
Laura Mendes
Laura Mendes am 13 Jun. 2021
I did it thank u very much

Melden Sie sich an, um zu kommentieren.

Antworten (2)

John D'Errico
John D'Errico am 12 Jun. 2021

0 Stimmen

Ye gods, that is a complicated way to solve a job poorly. Sorry, but it is. Two lines, assuming you want the result in outstring. One line, if you are willing to replace in the original string.
outstring = instring;
outstring(instring == '_') = ' ';
That replaces every underscore with a space.

1 Kommentar

Laura Mendes
Laura Mendes am 13 Jun. 2021
I had to change something here, but it HELPED! Thank you so much for the support!

Melden Sie sich an, um zu kommentieren.

Steven Lord
Steven Lord am 12 Jun. 2021
Use the replace function.
before = 'Hello world'
before = 'Hello world'
after = replace(before, ' ', ' cruel ')
after = 'Hello cruel world'

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 12 Jun. 2021

Kommentiert:

am 13 Jun. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by