file name manipulation

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

Jason
Jason 2011년 5월 6일
Just to add, the "1" in the file name can also be 1,2,3,4.

댓글을 달려면 로그인하십시오.

 채택된 답변

Oleg Komarov
Oleg Komarov 2011년 5월 6일

0 개 추천

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

Jason
Jason 2011년 5월 6일
Y is not a variable, its fixed by the first file I read in, and so would need to extract this from the file name
Oleg Komarov
Oleg Komarov 2011년 5월 6일
I misread your request at first, now given a string name "str", it replaces the 6 in the example with the number 3.
Jason
Jason 2011년 5월 6일
but sometimes the number to be replaced can be single digit 1-9) or double digit 10-16.
Jason
Jason 2011년 5월 6일
sorry, i didn't realise you code handles this. Thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Teja Muppirala
Teja Muppirala 2011년 5월 6일

0 개 추천

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

Oleg Komarov
Oleg Komarov 2011년 5월 6일
num2str supports the format:
num2str(1,'%03.f')
Jason
Jason 2011년 5월 6일
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 2011년 5월 6일
I edited my answer. Check it out.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

질문:

2011년 5월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by