Re: String to List
- To: mathgroup at smc.vnet.net
- Subject: [mg77018] Re: [mg76959] String to List
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 31 May 2007 03:41:18 -0400 (EDT)
- Reply-to: hanlonr at cox.net
a = "{x,16,x,1T,x}"; b = StringSplit[Fold[StringDrop[#1, #2] &, a, {1, -1}], ","] {x,16,x,1T,x} Head /@ b {String,String,String,String,String} c = b /. x_?(NumericQ[ToExpression[#]] &) :> ToExpression[x] {x,16,x,1T,x} Head /@ c {String,Integer,String,String,String} Bob Hanlon ---- "King wrote: > I have a string which in general looks something like > > a="{x,16,x,1T,x}" > > In other words it looks like a list with a mixture of characters and > numbers and so on. I want to pick out the individual elements of this > (using the commas as delimiters) > > Clearly a[[1]] etc doesn't mean anything > > I can do b=ToExpression[a] and I get a list so b[[1]] is x and > b[[2]]=16 (that is the number sixteen but I can convert this back into = > a > string with ToString. The problem is b[[4]] which ToExpression turns > into T as it thinks I mean 1 x T. > > So I would appreciate help with either > > i) converting my original string to a list as I would like > > Or > > Ii) stopping the evaluation of 1T into T so that I can get the string 1T > > (The only thought I had was to step through the original string > character by character telling it to put the characters into different > elements of a list each time I pass a comma, but this looked a bit > cumbersome). > > Many thanks, > > Peter King >