File names and strings
- To: mathgroup at smc.vnet.net
- Subject: [mg110951] File names and strings
- From: "S. B. Gray" <stevebg at ROADRUNNER.COM>
- Date: Tue, 13 Jul 2010 05:27:53 -0400 (EDT)
- Reply-to: stevebg at ROADRUNNER.COM
I have a folder like this: (SetDirectory is correctly set.)
FileNames[]
{Linkmax-n=06-3457873882.nb, (* This is a list of strings. *)
Linkmax-n=06-3487762236.nb,
Linkmax-n=07-3457879999.nb,
Linkmin-n=06-3457873882.nb,
Linkmin-n=06-3487762236.nb,
Linkmin-n=07-3457879999.nb,
Link-n=07, (* For testing.*)
Testname-n=07-3457879999.nb} (* For testing.*)
(* Why do some of these functions work and others do not? *)
In[856]:= FileNames["Link*06*"]
Out[856]= {
"Linkmax-n=06-3457873882.nb", \
"Linkmax-n=06-3487762236.nb",
"Linkmin-n=06-3457873882.nb", \
"Linkmin-n=06-3487762236.nb"} (* What I expect and what I want.*)
In[847]:= FileNames["Link*-n=*"]
Out[847]= {
"Linkmax-n=06-3457873882.nb", \
"Linkmax-n=06-3487762236.nb",
"Linkmax-n=07-3457879999.nb", \
"Linkmin-n=06-3457873882.nb",
"Linkmin-n=06-3487762236.nb", \
"Linkmin-n=07-3457879999.nb",
"Link-n=07"} (* Also what I would expect. *)
In[867]:= num = 6;
FileNames["Link*-n=" <> "06"] (* Can't I use <> here? *)
Out[868]= {}(* I thought this would give same as Out[847] ?? *)
In[861]:= num=6;
numstr=If[num<10, numstr="0"<>ToString[num],
numstr = ToString[num]]
FileNames["Link*" <> ToString[numstr]] (* No good also. ?? *)
Out[862]= "06"
Out[863]= {}(* I thought this would give same as Out[847] ?? *)
In[851]:= rname = "Link*-n=" <> numstr
FileNames[rname] (* Also not acceptable, but why? *)
Out[851]= "Link*-n=06"
Out[852]= {}(* I thought this would give same as Out[847] ?? *)
Clearly there is something missing in my understanding of file name
strings. What is the difference between *, __, and ~~, and where does
one use which of them? Is there a clear explanation of these issues
anywhere? I would certainly appreciate some help here. Thank you.
Steve Gray