file name manipulation

조회 수: 8 (최근 30일)
Jason
Jason 2011년 5월 6일
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일
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일
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일
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
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.

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

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by