Filter löschen
Filter löschen

How to search for specific characters within a string.

2 Ansichten (letzte 30 Tage)
Alex
Alex am 18 Sep. 2013
Kommentiert: dpb am 1 Okt. 2013
Say I have the following files,
foo1.85e-01.mat
foo1.79e+00.mat
foo1.82e+00.mat
foo1.94e+00.mat
foo2.30e+00.mat
How can I select just the files with numbers between 1.8 and 2.0, i.e., the third and fourth files? Together the commands
flist = dir('foo1.8*e+00.mat')
and
flist = dir('foo1.9*e+00.mat')
return all the desired files. But is there a single query that will return the same files?

Akzeptierte Antwort

dpb
dpb am 18 Sep. 2013
The OS wildcard search isn't flexible enough directly; I'd just return them all and then winnow the list while processing it -- sotoo
d=dir('foo*.mat');
for ix=1:length(d)
fn=d(ix).name;
if ~iswithin(sscanf(fn,'foo%f.mat'), 1.8, 2.0), break, end % skip unwanted
...
end
where iswithin is my handy helper function
function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
  2 Kommentare
Alex
Alex am 1 Okt. 2013
Thanks, dpb. I've implemented something similar in my code now. The sscanf function was the thing I was looking for, something that would extract numbers from a string.
dpb
dpb am 1 Okt. 2013
Glad it helped...

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by