Re: String Deletion

*To*: mathgroup at smc.vnet.net*Subject*: [mg121503] Re: String Deletion*From*: David Bailey <dave at removedbailey.co.uk>*Date*: Sun, 18 Sep 2011 04:08:56 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <j51sst$pfv$1@smc.vnet.net>

On 17/09/2011 11:30, Don wrote: > Given a simple list of strings: > > list = List["Z:XBREG","Z:XBREH","Z:XBREI","Z:ZZ6P","Z:ZZ6Q","aye"] > > how does one delete all the strings with a colon (:) anywhere in the string? > > DeleteCases[list, ___:___] looks very logical and should work, > but of course it doesn't . > > Also, there is a StringCases function which would seem > to correspond with the Cases function. There is a > DeleteCases function but no string counterpart, namely, > DeleteString function. Any reason for this? > > Thanks in advance. > The short answer (one of several possible) is: ll={"Z:XBREG","Z:XBREH","Z:XBREI","Z:ZZ6P","Z:ZZ6Q","aye"}; DeleteCases[ll,x_/;StringMatchQ[x,___~~":"~~___]] {"aye"} The longer answer is to encourage you to learn the syntax of Mathematica! If you had, you would realise that the colon in DeleteCases[list, ___:___] appears in the context of an operator - it is not a character in a string, so that expression is not going to pick out strings containing a colon, any more than it is going to pick out strings containing "_", or "[", or "]". Any computer language that allows character/string manipulation, has to distinguish between characters representing themselves, and characters that are part of the expression syntax. StringCases operates on a string (although the first argument can be a list of strings, but that only applies StringCases to every item of the list). David Bailey http://www.dbaileyconsultancy.co.uk