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