Re: Re: Strings to Integers
- To: mathgroup at smc.vnet.net
- Subject: [mg67638] Re: [mg67614] Re: [mg67566] Strings to Integers
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Mon, 3 Jul 2006 06:37:44 -0400 (EDT)
- Reply-to: hanlonr at cox.net
- Sender: owner-wri-mathgroup at wolfram.com
Bruce,
It works as desired with RuleDelayed (note that a space is required after the blank)
StringCases["12:00",
x__~~":"~~y__ :>
{ToExpression@x,ToExpression@y}]
{{12, 0}}
Map[Head,%[[1]]]
{Integer,Integer}
This can be written more compactly as
StringCases["12:00",
x__~~":"~~y__ :> ToExpression@{x,y}]
{{12, 0}}
Bob Hanlon
---- Bruce Colletti <vze269bv at verizon.net> wrote:
> Bob
>
> I like your and Paul's solutions better than mine. The following baffles me, though...
>
> Your solution delivers the desired list of integers:
>
> ToExpression@StringSplit["12:00",":"]
> Map[Head,%]
>
> {12,0}
>
> {Integer,Integer}
>
> But why doesn't my solution work:
>
> StringCases["12:00",x__~~":"~~y__->{ToExpression@x,ToExpression@y}]
>
> Map[Head,%[[1]]]
>
> {{12,00}}
>
> {String,String}
>
> I'm using v5.2.0.0. Thanks.
>
> Bruce
>
> =====================
> From: Bob Hanlon <hanlonr at cox.net>
To: mathgroup at smc.vnet.net
> Subject: [mg67638] [mg67614] Re: [mg67566] Strings to Integers
>
> data = {"12:33", "120:03", "343:59", "1:00"};
>
> ToExpression[StringSplit[#, ":"]& /@ data]
>
> {{12, 33}, {120, 3}, {343, 59}, {1, 0}}
>
>
> Bob Hanlon
>
> ---- Virgil Stokes <vs at it.uu.se> wrote:
> > The following is an example of a list that contains times in min:sec,
> >
> > {12.33, 120:03, 343:59, 1:00}
> >
> > where each element is of String type.
> >
> > Is there a "smart" way to convert lists such as this into Integer type
> > for both minutes and seconds?
> >
> > --Thanks,
> > V. Stokes
> >
>