How do I name a file from part of the file name read in?

11 ビュー (過去 30 日間)
Christopher
Christopher 2014 年 1 月 27 日
回答済み: Image Analyst 2014 年 1 月 27 日
I would like to read in files from a directory, store their names, modify the files, and write out new files with a name based on the files read in. I have a solution that takes the first 8 characters of the read in file and uses that as part of the new written file. But, I would like the code to take the part of the name before a specific character is observed (an underscore "_") because the number of characters changes depending on the samples I'm analyzing. The file I read in is named "6145abc_acquired.txt" and I would like to name the written file "6145abc-ave100raw.txt".
Here's part of my current code:
files = dir('*.txt');
numfiles = numel(files);
for i=1:length(files)
filename = files(i).name;
[~,name] = fileparts(filename);
nameaves = name(1:8);
... in here I process the data creating the variable ave100...
dlmwrite([nameaves, '-ave100raw' '.txt'], ave100, '\t');
end
I would like to modify the name(1:8) to something that's more flexible and includes only what comes before the underscore "_".
Thanks.

採用された回答

AJ von Alt
AJ von Alt 2014 年 1 月 27 日
The function strsplit will split a string into parts based on a delimiter.
Replace
nameaves = name(1:8);
With:
namesplit = strsplit( name , '_' );
nameaves = namesplit{1};

その他の回答 (1 件)

Image Analyst
Image Analyst 2014 年 1 月 27 日
Try this:
filename = '6145abc_acquired.txt'
underlineIndex = find(filename == '_', 1, 'first')
newFileName = sprintf('%s-ave100raw.txt', filename(1:underlineIndex-1))

カテゴリ

Help Center および File ExchangeData Import and Analysis についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by