Filter löschen
Filter löschen

Selecting middle of file name

5 Ansichten (letzte 30 Tage)
Sia Sharma
Sia Sharma am 9 Nov. 2022
Kommentiert: Voss am 10 Nov. 2022
Hi, I have many files with varying names. I have a string from 8:12 that is the same for all. However it is not the beginning of the file name. How would i write a statement to address all of them with the same numbers at spot 8:12?
I want to follow it up with an if statment so that MATLab can hunt my file names for the specific numbers in 8:12.
Thank you!

Antworten (2)

Voss
Voss am 9 Nov. 2022
If your file names are stored as a cell array of character vectors:
fn = {'abcdefg89012mnopq' 'abcdefg89013mnopq' 'abcdefg89014mnopq' 'abcdefg89012mnopz'};
temp = cellfun(@(x)x(8:12),fn,'UniformOutput',false)
temp = 1×4 cell array
{'89012'} {'89013'} {'89014'} {'89012'}
Alternatively, if they are stored as a string array:
fn = ["abcdefg89012mnopq" "abcdefg89013mnopq" "abcdefg89014mnopq" "abcdefg89012mnopz"];
temp = extractBetween(fn,8,12)
temp = 1×4 string array
"89012" "89013" "89014" "89012"
Then, regardless of whether cell array or string array:
idx = strcmp(temp,'89012') % logical index of which names match '89012' in positions 8:12
idx = 1×4 logical array
1 0 0 1
fn(idx) % the matching file names
ans = 1×2 string array
"abcdefg89012mnopq" "abcdefg89012mnopz"
  2 Kommentare
Sia Sharma
Sia Sharma am 10 Nov. 2022
Thank you!
Voss
Voss am 10 Nov. 2022
You're welcome! If you have any questions, let me know. Otherwise, please "Accept this Answer". Thanks!

Melden Sie sich an, um zu kommentieren.


Image Analyst
Image Analyst am 10 Nov. 2022
Try this:
filePattern = fullfile(pwd, '*.txt'); % Whatever it is.
fileList = dir(filePattern);
for k = 1 : numel(fileList)
% Get the file name.
thisName = fileList(k).name;
% Get the characters in indexes 8 to 12 into a substring.
str = thisName(8:12);
% Search that substring for particular number, or as poster says:
% "hunt my file names for the specific numbers"
% For example see if there is a 9 in the substring.
if contains(str, '9')
% String contains the number we're looking for
end
end
If this is not what you wanted to do then give me a list of some typical filenames, "the specific numbers in 8:12" that you're seeking, and what you expect as the output.

Community Treasure Hunt

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

Start Hunting!

Translated by