file name manipulation

6 Ansichten (letzte 30 Tage)
Jason
Jason am 6 Mai 2011
I have a file name that takes the form: S_1_X_Y where X can be an integer between 1-16, and Y is a letter a,b,c,d.
I want to be able to just replace the number X by a user defined value.
any help greatly appreciated. Thanks
  1 Kommentar
Jason
Jason am 6 Mai 2011
Just to add, the "1" in the file name can also be 1,2,3,4.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Oleg Komarov
Oleg Komarov am 6 Mai 2011
X = 1;
Y = 'a';
sprintf('S_1_%d_%s',X,Y)
EDIT
str = 'S_1_6_a'
x = 3;
regexprep(str,'(_)\d+(_[abcd])', ['$1' sprintf('%d',x) '$2'])
ans =
S_1_3_a
  4 Kommentare
Jason
Jason am 6 Mai 2011
but sometimes the number to be replaced can be single digit 1-9) or double digit 10-16.
Jason
Jason am 6 Mai 2011
sorry, i didn't realise you code handles this. Thanks

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Teja Muppirala
Teja Muppirala am 6 Mai 2011
NUM2STR is useful for stuff like this.
Y = {'a' 'b' 'c' 'd'}
for jj = 1:4
for n = 1:9
filename = ['S_1_' num2str(n) '_' Y{jj}]
end
end
Or alternatively, if you need to have zeros in there like '001', '002', '003' then you can use SPRINTF instead of NUM2STR
n = 7;
filename = ['S_1_' sprintf('%03.f',n) '_a']
n = 61;
filename = ['S_1_' sprintf('%03.f',n) '_a']
  3 Kommentare
Jason
Jason am 6 Mai 2011
sorry, I didn't explain my question clearly. I read in a filename that takes the form S_1_X_Y e.g. S_1_6_a the "a" character can be either a,b,c,d. X can be 1 to 16..
Once this filename is read in as a string, I need to keep it exactly the same, but only change the character X to a different number between 1-16.
Oleg Komarov
Oleg Komarov am 6 Mai 2011
I edited my answer. Check it out.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by