Re: Using Cases or Position to Find Strings in a List of Strings
- To: mathgroup at smc.vnet.net
- Subject: [mg119516] Re: Using Cases or Position to Find Strings in a List of Strings
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Tue, 7 Jun 2011 08:13:48 -0400 (EDT)
- References: <iskvlh$5rm$1@smc.vnet.net>
Hi, > I have a list of strings called myListOfFilePaths and I want to find > which one of those strings ends in ".DS_Store" (a hidden file created by > the Mac OS). I can pick it off using Select as > > Select[myListOfFilePaths, StringMatchQ[#, ___ ~~ ".DS_Store" ~~ > EndOfString]&] > > but I can't do it using Cases or Position > > Cases[myListOfFilePaths, ___ ~~ ".DS_Store" ~~ EndOfString] > > Position[myListOfFilePaths, ___ ~~ ".DS_Store" ~~ EndOfString] > > despite the fact that Head[___ ~~ ".DS_Store" ~~ EndOfString] is StringExpression. What am I doing wrong? you need StringCases if your pattern are StringExpressions. For Position the situation is more complicated, since StringPosition will return a list of the positions within each string, not just the position of the string within the list. But you can always do something like this: Cases[myListOfFilePaths, _String?(StringMatchQ[#, ___ ~~ ".DS_Store" ~~ EndOfString]&), {1}] Position[myListOfFilePaths, _String?(StringMatchQ[#, ___ ~~ ".DS_Store" ~~ EndOfString] &), {1}] hth, albert